Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31500)
@@ -67,10 +67,13 @@
 
   /**
-   * Removes an image from the database.
-   *
-   * @param image
+   * Removes an image from the database. From the ArrayList in this object and
+   * from its {@link MapillarySequence}.
+   *
+   * @param image
+   *          The {@link MapillaryAbstractImage} that is going to be deleted.
    */
   public synchronized void remove(MapillaryAbstractImage image) {
-    if (MapillaryMainDialog.getInstance().getImage() != null) {
+    if (Main.main != null
+        && MapillaryMainDialog.getInstance().getImage() != null) {
       MapillaryMainDialog.getInstance().setImage(null);
       MapillaryMainDialog.getInstance().updateImage();
@@ -88,4 +91,6 @@
    *
    * @param images
+   *          The set of {@link MapillaryAbstractImage} objects that are going
+   *          to be removed.
    */
   public synchronized void remove(List<MapillaryAbstractImage> images) {
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandDelete.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandDelete.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandDelete.java	(revision 31500)
@@ -10,4 +10,6 @@
 
 /**
+ * Command used to delete a set of images.
+ *
  * @author nokutu
  *
@@ -18,5 +20,8 @@
 
   /**
+   * Main constructor.
+   *
    * @param images
+   *          The set of images that are going to be deleted.
    */
   public CommandDelete(List<MapillaryAbstractImage> images) {
@@ -27,5 +32,4 @@
   @Override
   public void sum(MapillaryCommand command) {
-    // Ignored
   }
 
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandImport.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandImport.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandImport.java	(revision 31500)
@@ -22,4 +22,6 @@
    *
    * @param images
+   *          The set of images that are going to be added. Might be in the same
+   *          sequence or not.
    */
   public CommandImport(List<MapillaryAbstractImage> images) {
@@ -47,5 +49,4 @@
   @Override
   public void sum(MapillaryCommand command) {
-    // IGNORE
   }
 
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandJoin.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandJoin.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandJoin.java	(revision 31500)
@@ -6,5 +6,4 @@
 
 import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
 import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
 
@@ -21,7 +20,13 @@
    *
    * @param images
+   *          The two images that are going to be joined. Must be of exactly
+   *          size 2. The first one joins to the second one.
+   * @throws IllegalArgumentException
+   *           if the List size is different from 2.
    */
   public CommandJoin(List<MapillaryAbstractImage> images) {
     super(images);
+    if (images.size() != 2)
+      throw new IllegalArgumentException();
   }
 
@@ -33,18 +38,14 @@
   @Override
   public void undo() {
-    MapillaryUtils.unjoin((MapillaryImportedImage) this.images.get(0),
-        (MapillaryImportedImage) this.images.get(1));
+    MapillaryUtils.unjoin(this.images.get(0), this.images.get(1));
   }
 
   @Override
   public void redo() {
-    MapillaryUtils.join((MapillaryImportedImage) this.images.get(0),
-        (MapillaryImportedImage) this.images.get(1));
+    MapillaryUtils.join(this.images.get(0), this.images.get(1));
   }
 
   @Override
   public void sum(MapillaryCommand command) {
-    // TODO Auto-generated method stub
-
   }
 
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandUnjoin.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandUnjoin.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandUnjoin.java	(revision 31500)
@@ -6,5 +6,4 @@
 
 import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
 import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
 
@@ -21,7 +20,13 @@
    *
    * @param images
+   *          The two images that are going to be unjoined. Must be of exactly
+   *          size 2.
+   * @throws IllegalArgumentException
+   *           if the List size is different from 2.
    */
   public CommandUnjoin(List<MapillaryAbstractImage> images) {
     super(images);
+    if (images.size() != 2)
+      throw new IllegalArgumentException();
   }
 
@@ -33,17 +38,14 @@
   @Override
   public void undo() {
-    MapillaryUtils.join((MapillaryImportedImage) this.images.get(0),
-        (MapillaryImportedImage) this.images.get(1));
+    MapillaryUtils.join(this.images.get(0), this.images.get(1));
   }
 
   @Override
   public void redo() {
-    MapillaryUtils.unjoin((MapillaryImportedImage) this.images.get(0),
-        (MapillaryImportedImage) this.images.get(1));
+    MapillaryUtils.unjoin(this.images.get(0), this.images.get(1));
   }
 
   @Override
   public void sum(MapillaryCommand command) {
-    // IGNORE
   }
 
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/MapillaryExecutableCommand.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/MapillaryExecutableCommand.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/MapillaryExecutableCommand.java	(revision 31500)
@@ -17,4 +17,5 @@
    *
    * @param images
+   *          The set of images affected by the command.
    */
   public MapillaryExecutableCommand(List<MapillaryAbstractImage> images) {
@@ -23,5 +24,6 @@
 
   /**
-   * Executes the command.
+   * Executes the command. It is run when the command is added to the history
+   * record.
    */
   public abstract void execute();
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryUtils.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryUtils.java	(revision 31496)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryUtils.java	(revision 31500)
@@ -19,5 +19,4 @@
 import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
 import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
 import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
 import org.openstreetmap.josm.plugins.mapillary.MapillarySequence;
@@ -137,15 +136,15 @@
    * Joins two images into the same sequence.
    *
-   * @param img1
-   * @param img2
-   */
-  public synchronized static void join(MapillaryImportedImage img1,
-      MapillaryImportedImage img2) {
-    MapillaryImportedImage firstImage = img1;
-    MapillaryImportedImage secondImage = img2;
-
-    if (img1.next() != null) {
-      firstImage = img2;
-      secondImage = img1;
+   * @param mapillaryAbstractImage
+   * @param mapillaryAbstractImage2
+   */
+  public synchronized static void join(MapillaryAbstractImage mapillaryAbstractImage,
+      MapillaryAbstractImage mapillaryAbstractImage2) {
+    MapillaryAbstractImage firstImage = mapillaryAbstractImage;
+    MapillaryAbstractImage secondImage = mapillaryAbstractImage2;
+
+    if (mapillaryAbstractImage.next() != null) {
+      firstImage = mapillaryAbstractImage2;
+      secondImage = mapillaryAbstractImage;
     }
     if (firstImage.getSequence() == null) {
@@ -157,5 +156,5 @@
       MapillarySequence seq = new MapillarySequence();
       seq.add(secondImage);
-      img2.setSequence(seq);
+      mapillaryAbstractImage2.setSequence(seq);
     }
 
@@ -171,15 +170,15 @@
    * Separates two images belonging to the same sequence.
    *
-   * @param img1
-   * @param img2
-   */
-  public synchronized static void unjoin(MapillaryImportedImage img1,
-      MapillaryImportedImage img2) {
-    MapillaryImportedImage firstImage = img1;
-    MapillaryImportedImage secondImage = img2;
-
-    if (img1.next() != img2) {
-      firstImage = img2;
-      secondImage = img1;
+   * @param mapillaryAbstractImage
+   * @param mapillaryAbstractImage2
+   */
+  public synchronized static void unjoin(MapillaryAbstractImage mapillaryAbstractImage,
+      MapillaryAbstractImage mapillaryAbstractImage2) {
+    MapillaryAbstractImage firstImage = mapillaryAbstractImage;
+    MapillaryAbstractImage secondImage = mapillaryAbstractImage2;
+
+    if (mapillaryAbstractImage.next() != mapillaryAbstractImage2) {
+      firstImage = mapillaryAbstractImage2;
+      secondImage = mapillaryAbstractImage;
     }
 
