Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 10972)
@@ -69,5 +69,4 @@
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
 import org.openstreetmap.josm.data.validation.OsmValidator;
-import org.openstreetmap.josm.gui.GettingStarted;
 import org.openstreetmap.josm.gui.MainFrame;
 import org.openstreetmap.josm.gui.MainMenu;
@@ -81,5 +80,4 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
@@ -90,5 +88,4 @@
 import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
-import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.RedirectInputMap;
 import org.openstreetmap.josm.io.FileWatcher;
@@ -208,11 +205,4 @@
     public static final FileWatcher fileWatcher = new FileWatcher();
 
-    /**
-     * The MOTD Layer.
-     * @deprecated Do not access this. It will be removed soon. You should not need to access the GettingStarted panel.
-     */
-    @Deprecated
-    public final GettingStarted gettingStarted = mainPanel.getGettingStarted();
-
     protected static final Map<String, Throwable> NETWORK_ERRORS = new HashMap<>();
 
@@ -467,31 +457,4 @@
      */
     public static volatile PlatformHook platform;
-
-    /**
-     * Set or clear (if passed <code>null</code>) the map.
-     * <p>
-     * To be removed any time
-     * @param map The map to set {@link Main#map} to. Can be null.
-     * @deprecated This is done automatically by {@link MainPanel}
-     */
-    @Deprecated
-    public final void setMapFrame(final MapFrame map) {
-        Main.warn("setMapFrame call was ignored.");
-    }
-
-    /**
-     * Remove the specified layer from the map. If it is the last layer,
-     * remove the map as well.
-     * <p>
-     * To be removed end of 2016
-     * @param layer The layer to remove
-     * @deprecated You can remove the layer using {@link #getLayerManager()}
-     */
-    @Deprecated
-    public final synchronized void removeLayer(final Layer layer) {
-        if (map != null) {
-            getLayerManager().removeLayer(layer);
-        }
-    }
 
     private static volatile InitStatusListener initListener;
@@ -627,22 +590,4 @@
      *
      * If no map exists, create one.
-     * <p>
-     * To be removed end of 2016
-     *
-     * @param layer the layer
-     *
-     * @see #addLayer(Layer, ProjectionBounds)
-     * @see #addLayer(Layer, ViewportData)
-     * @deprecated You can add the layer to the layer manager: {@link #getLayerManager()}
-     */
-    @Deprecated
-    public final void addLayer(final Layer layer) {
-        addLayer(layer, (ViewportData) null);
-    }
-
-    /**
-     * Add a new layer to the map.
-     *
-     * If no map exists, create one.
      *
      * @param layer the layer
@@ -668,58 +613,4 @@
             Main.map.mapView.scheduleZoomTo(viewport);
         }
-    }
-
-    /**
-     * Creates the map frame. Call only in EDT Thread.
-     * <p>
-     * To be removed any time
-     * @param firstLayer The first layer that was added.
-     * @param viewportData The initial viewport. Can be <code>null</code> to be automatically computed.
-     * @deprecated Not supported. MainPanel does this automatically.
-     */
-    @Deprecated
-    public synchronized void createMapFrame(Layer firstLayer, ViewportData viewportData) {
-        GuiHelper.assertCallFromEdt();
-        Main.error("createMapFrame() not supported any more.");
-    }
-
-    /**
-     * Replies <code>true</code> if there is an edit layer
-     * <p>
-     * To be removed end of 2016
-     *
-     * @return <code>true</code> if there is an edit layer
-     * @deprecated You can get the edit layer using the layer manager and then check if it is not null: {@link #getLayerManager()}
-     */
-    @Deprecated
-    public boolean hasEditLayer() {
-        if (getEditLayer() == null) return false;
-        return true;
-    }
-
-    /**
-     * Replies the current edit layer
-     * <p>
-     * To be removed end of 2016
-     *
-     * @return the current edit layer. <code>null</code>, if no current edit layer exists
-     * @deprecated You can get the edit layer using the layer manager: {@link #getLayerManager()}
-     */
-    @Deprecated
-    public OsmDataLayer getEditLayer() {
-        return getLayerManager().getEditLayer();
-    }
-
-    /**
-     * Replies the current data set.
-     * <p>
-     * To be removed end of 2016
-     *
-     * @return the current data set. <code>null</code>, if no current data set exists
-     * @deprecated You can get the data set using the layer manager: {@link #getLayerManager()}
-     */
-    @Deprecated
-    public DataSet getCurrentDataSet() {
-        return getLayerManager().getEditDataSet();
     }
 
@@ -741,17 +632,4 @@
             return ds.getSelected();
         }
-    }
-
-    /**
-     * Returns the currently active  layer
-     * <p>
-     * To be removed end of 2016
-     *
-     * @return the currently active layer. <code>null</code>, if currently no active layer exists
-     * @deprecated You can get the layer using the layer manager: {@link #getLayerManager()}
-     */
-    @Deprecated
-    public Layer getActiveLayer() {
-        return getLayerManager().getActiveLayer();
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 10972)
@@ -23,5 +23,4 @@
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.tools.Destroyable;
@@ -38,6 +37,5 @@
  * a layer change event or a selection change event it invokes {@link #updateEnabledState()}.
  * Subclasses can override {@link #updateEnabledState()} in order to update the {@link #isEnabled()}-state
- * of a JosmAction depending on the {@link #getCurrentDataSet()} and the current layers
- * (see also {@link #getEditLayer()}).
+ * of a JosmAction depending on the {@link #getLayerManager()} state.
  *
  * destroy() from interface Destroyable is called e.g. for MapModes, when the last layer has
@@ -270,26 +268,4 @@
     }
 
-    /**
-     * Replies the current edit layer
-     *
-     * @return the current edit layer. null, if no edit layer exists
-     * @deprecated Use {@link #getLayerManager()}.getEditLayer() instead. To be removed in end of 2016.
-     */
-    @Deprecated
-    public static OsmDataLayer getEditLayer() {
-        return Main.getLayerManager().getEditLayer();
-    }
-
-    /**
-     * Replies the current dataset.
-     *
-     * @return the current dataset. null, if no current dataset exists
-     * @deprecated Use {@link #getLayerManager()}.getEditDataSet() instead. To be removed in end of 2016.
-     */
-    @Deprecated
-    public static DataSet getCurrentDataSet() {
-        return Main.getLayerManager().getEditDataSet();
-    }
-
     protected static void waitFuture(final Future<?> future, final PleaseWaitProgressMonitor monitor) {
         Main.worker.submit(() -> {
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 10972)
@@ -94,5 +94,5 @@
  * @author imi
  */
-public final class DataSet implements Data, Cloneable, ProjectionChangeListener {
+public final class DataSet implements Data, ProjectionChangeListener {
 
     /**
@@ -919,14 +919,4 @@
             fireSelectionChanged();
         }
-    }
-
-    /**
-     * Return a copy of this dataset
-     * @deprecated Use the copy constructor instead. Remove in July 2016
-     */
-    @Deprecated
-    @Override
-    public DataSet clone() {
-        return new DataSet(this);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 10972)
@@ -19,5 +19,4 @@
 import java.util.Objects;
 import java.util.Set;
-import java.util.function.Predicate;
 
 import org.openstreetmap.josm.Main;
@@ -196,86 +195,4 @@
         return ret;
     }
-
-    /**
-     * A predicate that filters primitives that are usable.
-     * @see OsmPrimitive#isUsable()
-     * @deprecated Use {@code OsmPrimitive::isUsable} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> isUsablePredicate = OsmPrimitive::isUsable;
-
-    /**
-     * A predicate filtering primitives that are selectable.
-     * @deprecated Use {@code OsmPrimitive::isSelectable} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> isSelectablePredicate = OsmPrimitive::isSelectable;
-
-    /**
-     * A predicate filtering primitives that are not deleted.
-     * @deprecated Use {@code p -> !p.isDeleted()} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> nonDeletedPredicate = p -> !p.isDeleted();
-
-    /**
-     * A predicate filtering primitives that are not deleted and not incomplete.
-     * @deprecated use lambda instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> nonDeletedCompletePredicate =
-            primitive -> !primitive.isDeleted() && !primitive.isIncomplete();
-
-    /**
-     * A predicate filtering primitives that are not deleted and not incomplete and that are not a relation.
-     * @deprecated use lambda instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> nonDeletedPhysicalPredicate =
-            primitive -> !primitive.isDeleted() && !primitive.isIncomplete() && !(primitive instanceof Relation);
-
-    /**
-     * A predicate filtering primitives that are modified
-     * @deprecated Use {@code OsmPrimitive::isModified} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> modifiedPredicate = OsmPrimitive::isModified;
-
-    /**
-     * A predicate filtering nodes.
-     * @deprecated Use {@code Node.class::isInstance} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> nodePredicate = Node.class::isInstance;
-
-    /**
-     * A predicate filtering ways.
-     * @deprecated Use {@code Way.class::isInstance} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> wayPredicate = Way.class::isInstance;
-
-    /**
-     * A predicate filtering relations.
-     * @deprecated Use {@code Relation.class::isInstance} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> relationPredicate = Relation.class::isInstance;
-
-    /**
-     * A predicate filtering multipolygon relations.
-     * @deprecated Use {@code OsmPrimitive::isMultipolygon} instead
-     */
-    @Deprecated
-    public static final Predicate<OsmPrimitive> multipolygonPredicate = OsmPrimitive::isMultipolygon;
-
-    /**
-     * This matches all ways that have a direction
-     *
-     * @see #FLAG_HAS_DIRECTIONS
-     * @deprecated use {@code directionKeys::match}
-     */
-    @Deprecated
-    public static final Predicate<Tag> directionalKeyPredicate = directionKeys::match;
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java	(revision 10972)
@@ -324,16 +324,4 @@
 
     /**
-     * Replies true if this tag collection contains at least one tag with key <code>key</code>.
-     *
-     * @param key the key to look up
-     * @return true if this tag collection contains at least one tag with key <code>key</code>; false, otherwise
-     * @deprecated Use {@link #hasTagsFor(String)} instead.
-     */
-    @Deprecated
-    public boolean containsKey(String key) {
-        return generateStreamForKey(key).findAny().isPresent();
-    }
-
-    /**
      * Replies true if this tag collection contains all tags in <code>tags</code>. Replies
      * false, if tags is null.
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10972)
@@ -1,6 +1,4 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.AlphaComposite;
@@ -23,5 +21,4 @@
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -59,9 +56,9 @@
 import org.openstreetmap.josm.gui.layer.LayerManager;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
-import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.MapViewGraphics;
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
@@ -93,51 +90,4 @@
 implements PropertyChangeListener, PreferenceChangedListener,
 LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
-    /**
-     * Interface to notify listeners of a layer change.
-     * <p>
-     * To be removed: end of 2016.
-     * @deprecated Use {@link org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener} instead.
-     * @author imi
-     */
-    @Deprecated
-    public interface LayerChangeListener {
-
-        /**
-         * Notifies this listener that the active layer has changed.
-         * @param oldLayer The previous active layer
-         * @param newLayer The new activer layer
-         */
-        void activeLayerChange(Layer oldLayer, Layer newLayer);
-
-        /**
-         * Notifies this listener that a layer has been added.
-         * @param newLayer The new added layer
-         */
-        void layerAdded(Layer newLayer);
-
-        /**
-         * Notifies this listener that a layer has been removed.
-         * @param oldLayer The old removed layer
-         */
-        void layerRemoved(Layer oldLayer);
-    }
-
-    /**
-     * An interface that needs to be implemented in order to listen for changes to the active edit layer.
-     * <p>
-     * To be removed: end of 2016.
-     * @deprecated Use {@link ActiveLayerChangeListener} instead.
-     */
-    @Deprecated
-    @FunctionalInterface
-    public interface EditLayerChangeListener {
-
-        /**
-         * Called after the active edit layer was changed.
-         * @param oldLayer The old edit layer
-         * @param newLayer The current (new) edit layer
-         */
-        void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer);
-    }
 
     /**
@@ -211,136 +161,4 @@
 
     /**
-     * This class is an adapter for the old layer change interface.
-     * @author Michael Zangl
-     * @since 10271
-     * @deprecated New implementations should use {@link org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener}
-     */
-    @Deprecated
-    protected static class LayerChangeAdapter implements ActiveLayerChangeListener, LayerManager.LayerChangeListener {
-
-        private final LayerChangeListener wrapped;
-        private boolean receiveOneInitialFire;
-
-        public LayerChangeAdapter(LayerChangeListener wrapped) {
-            this.wrapped = wrapped;
-        }
-
-        public LayerChangeAdapter(LayerChangeListener wrapped, boolean initialFire) {
-            this(wrapped);
-            this.receiveOneInitialFire = initialFire;
-        }
-
-        @Override
-        public void layerAdded(LayerAddEvent e) {
-            wrapped.layerAdded(e.getAddedLayer());
-        }
-
-        @Override
-        public void layerRemoving(LayerRemoveEvent e) {
-            wrapped.layerRemoved(e.getRemovedLayer());
-        }
-
-        @Override
-        public void layerOrderChanged(LayerOrderChangeEvent e) {
-            // not in old API
-        }
-
-        @Override
-        public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-            Layer oldActive = receiveOneInitialFire ? null : e.getPreviousActiveLayer();
-            Layer newActive = e.getSource().getActiveLayer();
-            if (oldActive != newActive) {
-                wrapped.activeLayerChange(oldActive, newActive);
-            }
-            receiveOneInitialFire = false;
-        }
-
-        @Override
-        public int hashCode() {
-            final int prime = 31;
-            int result = 1;
-            result = prime * result + ((wrapped == null) ? 0 : wrapped.hashCode());
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            if (this == obj)
-                return true;
-            if (obj == null)
-                return false;
-            if (getClass() != obj.getClass())
-                return false;
-            LayerChangeAdapter other = (LayerChangeAdapter) obj;
-            if (wrapped == null) {
-                if (other.wrapped != null)
-                    return false;
-            } else if (!wrapped.equals(other.wrapped))
-                return false;
-            return true;
-        }
-
-        @Override
-        public String toString() {
-            return "LayerChangeAdapter [wrapped=" + wrapped + ']';
-        }
-    }
-
-    /**
-     * This class is an adapter for the old layer change interface.
-     * @author Michael Zangl
-     * @since 10271
-     * @deprecated New implementations should use {@link org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener}
-     */
-    @Deprecated
-    protected static class EditLayerChangeAdapter implements ActiveLayerChangeListener {
-
-        private final EditLayerChangeListener wrapped;
-
-        public EditLayerChangeAdapter(EditLayerChangeListener wrapped) {
-            this.wrapped = wrapped;
-        }
-
-        @Override
-        public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-            OsmDataLayer oldLayer = e.getPreviousEditLayer();
-            OsmDataLayer newLayer = e.getSource().getEditLayer();
-            if (oldLayer != newLayer) {
-                wrapped.editLayerChanged(oldLayer, newLayer);
-            }
-        }
-
-        @Override
-        public int hashCode() {
-            final int prime = 31;
-            int result = 1;
-            result = prime * result + ((wrapped == null) ? 0 : wrapped.hashCode());
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            if (this == obj)
-                return true;
-            if (obj == null)
-                return false;
-            if (getClass() != obj.getClass())
-                return false;
-            EditLayerChangeAdapter other = (EditLayerChangeAdapter) obj;
-            if (wrapped == null) {
-                if (other.wrapped != null)
-                    return false;
-            } else if (!wrapped.equals(other.wrapped))
-                return false;
-            return true;
-        }
-
-        @Override
-        public String toString() {
-            return "EditLayerChangeAdapter [wrapped=" + wrapped + ']';
-        }
-    }
-
-    /**
      * A layer painter that issues a warning when being called.
      * @author Michael Zangl
@@ -368,126 +186,4 @@
         }
     }
-
-    /**
-     * Removes a layer change listener
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @param listener the listener. Ignored if null or not registered.
-     * @deprecated You should register the listener on {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public static void removeLayerChangeListener(LayerChangeListener listener) {
-        LayerChangeAdapter adapter = new LayerChangeAdapter(listener);
-        try {
-            Main.getLayerManager().removeLayerChangeListener(adapter);
-        } catch (IllegalArgumentException e) {
-            // Ignored in old implementation
-            Main.debug(e);
-        }
-        try {
-            Main.getLayerManager().removeActiveLayerChangeListener(adapter);
-        } catch (IllegalArgumentException e) {
-            // Ignored in old implementation
-            Main.debug(e);
-        }
-    }
-
-    /**
-     * Removes an edit layer change listener
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @param listener the listener. Ignored if null or not registered.
-     * @deprecated You should register the listener on {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public static void removeEditLayerChangeListener(EditLayerChangeListener listener) {
-        try {
-            Main.getLayerManager().removeActiveLayerChangeListener(new EditLayerChangeAdapter(listener));
-        } catch (IllegalArgumentException e) {
-            // Ignored in old implementation
-            Main.debug(e);
-        }
-    }
-
-    /**
-     * Adds a layer change listener
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @param listener the listener. Ignored if null or already registered.
-     * @deprecated You should register the listener on {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public static void addLayerChangeListener(LayerChangeListener listener) {
-        if (fireDeprecatedListenerOnAdd) {
-            Main.warn("Plugin seems to be adding listener during mapFrameInitialized(): " + BugReport.getCallingMethod(2)
-            + ". Layer listeners should be set on plugin load.");
-        }
-        addLayerChangeListener(listener, fireDeprecatedListenerOnAdd);
-    }
-
-    /**
-     * Adds a layer change listener
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @param listener the listener. Ignored if null or already registered.
-     * @param initialFire fire an active-layer-changed-event right after adding
-     * the listener in case there is a layer present (should be)
-     * @deprecated You should register the listener on {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public static void addLayerChangeListener(LayerChangeListener listener, boolean initialFire) {
-        if (listener != null) {
-            boolean doInitialFire = initialFire && (Main.isDisplayingMapView() || fireDeprecatedListenerOnAdd);
-
-            LayerChangeAdapter adapter = new LayerChangeAdapter(listener, doInitialFire);
-            Main.getLayerManager().addLayerChangeListener(adapter, doInitialFire);
-            if (doInitialFire) {
-                Main.getLayerManager().addAndFireActiveLayerChangeListener(adapter);
-            } else {
-                Main.getLayerManager().addActiveLayerChangeListener(adapter);
-            }
-            adapter.receiveOneInitialFire = false;
-        }
-    }
-
-    /**
-     * Adds an edit layer change listener
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @param listener the listener. Ignored if null or already registered.
-     * @param initialFire fire an edit-layer-changed-event right after adding
-     * the listener in case there is an edit layer present
-     * @deprecated You should register the listener on {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public static void addEditLayerChangeListener(EditLayerChangeListener listener, boolean initialFire) {
-        if (listener != null) {
-            boolean doFire = initialFire && Main.isDisplayingMapView() && Main.getLayerManager().getEditLayer() != null;
-            if (doFire) {
-                Main.getLayerManager().addAndFireActiveLayerChangeListener(new EditLayerChangeAdapter(listener));
-            } else {
-                Main.getLayerManager().addActiveLayerChangeListener(new EditLayerChangeAdapter(listener));
-            }
-        }
-    }
-
-    /**
-     * Adds an edit layer change listener
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @param listener the listener. Ignored if null or already registered.
-     * @deprecated You should register the listener on {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public static void addEditLayerChangeListener(EditLayerChangeListener listener) {
-        addEditLayerChangeListener(listener, false);
-    }
-
 
     /**
@@ -630,16 +326,4 @@
         oldSize = getSize();
         oldLoc = getLocationOnScreen();
-    }
-
-    /**
-     * Add a layer to the current MapView.
-     * <p>
-     * To be removed: end of 2016.
-     * @param layer The layer to add
-     * @deprecated Use {@link Main#getLayerManager()}.addLayer() instead.
-     */
-    @Deprecated
-    public void addLayer(Layer layer) {
-        layerManager.addLayer(layer);
     }
 
@@ -675,14 +359,4 @@
 
     /**
-     * Returns current data set. To be removed: end of 2016.
-     * @deprecated Use {@link #getLayerManager()}.getEditDataSet() instead.
-     */
-    @Override
-    @Deprecated
-    protected DataSet getCurrentDataSet() {
-        return layerManager.getEditDataSet();
-    }
-
-    /**
      * Replies true if the active data layer (edit layer) is drawable.
      *
@@ -701,46 +375,4 @@
         OsmDataLayer e = layerManager.getEditLayer();
         return e != null && e.isVisible();
-    }
-
-    /**
-     * Determines the next active data layer according to the following rules:
-     * <ul>
-     *   <li>if there is at least one {@link OsmDataLayer} the first one
-     *     becomes active</li>
-     *   <li>otherwise, the top most layer of any type becomes active</li>
-     * </ul>
-     * To be removed: end of 2016.
-     * @param layersList lit of layers
-     *
-     * @return the next active data layer
-     * @deprecated now handled by {@link MainLayerManager}
-     */
-    @Deprecated
-    protected Layer determineNextActiveLayer(List<Layer> layersList) {
-        // First look for data layer
-        for (Layer layer:layersList) {
-            if (layer instanceof OsmDataLayer)
-                return layer;
-        }
-
-        // Then any layer
-        if (!layersList.isEmpty())
-            return layersList.get(0);
-
-        // and then give up
-        return null;
-    }
-
-    /**
-     * Remove the layer from the mapview. If the layer was in the list before,
-     * an LayerChange event is fired.
-     * <p>
-     * To be removed: end of 2016.
-     * @param layer The layer to remove
-     * @deprecated Use {@link Main#getLayerManager()}.removeLayer() instead.
-     */
-    @Deprecated
-    public void removeLayer(Layer layer) {
-        layerManager.removeLayer(layer);
     }
 
@@ -797,38 +429,4 @@
         AudioPlayer.reset();
         repaint();
-    }
-
-    /**
-     * Gets the index of the layer in the layer list.
-     * <p>
-     * To be removed: end of 2016.
-     * @param layer The layer to search for.
-     * @return The index in the list.
-     * @throws IllegalArgumentException if that layer does not belong to this view.
-     * @deprecated Access the layer list using {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public int getLayerPos(Layer layer) {
-        int curLayerPos = layerManager.getLayers().indexOf(layer);
-        if (curLayerPos == -1)
-            throw new IllegalArgumentException(tr("Layer not in list."));
-        return curLayerPos;
-    }
-
-    /**
-     * Creates a list of the visible layers in Z-Order, the layer with the lowest Z-Order
-     * first, layer with the highest Z-Order last.
-     * <p>
-     * The active data layer is pulled above all adjacent data layers.
-     * <p>
-     * To be removed: end of 2016.
-     *
-     * @return a list of the visible in Z-Order, the layer with the lowest Z-Order
-     * first, layer with the highest Z-Order last.
-     * @deprecated Access the layer list using {@link Main#getLayerManager()} instead.
-     */
-    @Deprecated
-    public List<Layer> getVisibleLayersInZOrder() {
-        return layerManager.getVisibleLayersInZOrder();
     }
 
@@ -1049,95 +647,4 @@
     }
 
-    /**
-     * Returns all layers. To be removed: end of 2016.
-     *
-     * @return An unmodifiable collection of all layers
-     * @deprecated Use {@link LayerManager#getLayers()} instead.
-     */
-    @Deprecated
-    public Collection<Layer> getAllLayers() {
-        return layerManager.getLayers();
-    }
-
-    /**
-     * Returns all layers as list. To be removed: end of 2016.
-     *
-     * @return An unmodifiable ordered list of all layers
-     * @deprecated Use {@link LayerManager#getLayers()} instead.
-     */
-    @Deprecated
-    public List<Layer> getAllLayersAsList() {
-        return layerManager.getLayers();
-    }
-
-    /**
-     * Replies an unmodifiable list of layers of a certain type. To be removed: end of 2016.
-     *
-     * Example:
-     * <pre>
-     *     List&lt;WMSLayer&gt; wmsLayers = getLayersOfType(WMSLayer.class);
-     * </pre>
-     *
-     * @param <T> layer type
-     *
-     * @param ofType The layer type.
-     * @return an unmodifiable list of layers of a certain type.
-     * @deprecated Use {@link LayerManager#getLayersOfType(Class)} instead.
-     */
-    @Deprecated
-    public <T extends Layer> List<T> getLayersOfType(Class<T> ofType) {
-        return layerManager.getLayersOfType(ofType);
-    }
-
-    /**
-     * Replies the number of layers managed by this map view. To be removed: end of 2016.
-     * <p>
-     *
-     * @return the number of layers managed by this map view
-     * @deprecated Use {@link Main#getLayerManager()}.getLayers().size() instead.
-     */
-    @Deprecated
-    public int getNumLayers() {
-        return getAllLayers().size();
-    }
-
-    /**
-     * Replies true if there is at least one layer in this map view
-     * <p>
-     *
-     * @return true if there is at least one layer in this map view
-     * @deprecated Use !{@link Main#getLayerManager()}.getLayers().isEmpty() instead.
-     */
-    @Deprecated
-    public boolean hasLayers() {
-        return getNumLayers() > 0;
-    }
-
-    /**
-     * Sets the active layer to <code>layer</code>. If <code>layer</code> is an instance
-     * of {@link OsmDataLayer} also sets editLayer to <code>layer</code>.
-     * <p>
-     *
-     * @param layer the layer to be activate; must be one of the layers in the list of layers
-     * @throws IllegalArgumentException if layer is not in the list of layers
-     * @deprecated Use !{@link Main#getLayerManager()}.setActiveLayer() instead.
-     */
-    @Deprecated
-    public void setActiveLayer(Layer layer) {
-        layerManager.setActiveLayer(layer);
-    }
-
-    /**
-     * Replies the currently active layer
-     * <p>
-     *
-     * @return the currently active layer (may be null)
-     * @deprecated Use !{@link Main#getLayerManager()}.getActiveLayer() instead.
-     */
-    @Deprecated
-    public Layer getActiveLayer() {
-        return layerManager.getActiveLayer();
-    }
-
     @Override
     public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
@@ -1164,29 +671,4 @@
 
     /**
-     * Replies the current edit layer, if any
-     * <p>
-     *
-     * @return the current edit layer. May be null.
-     * @deprecated Use !{@link Main#getLayerManager()}.getEditLayer() instead. To be made private: end of 2016.
-     */
-    @Deprecated
-    public OsmDataLayer getEditLayer() {
-        return layerManager.getEditLayer();
-    }
-
-    /**
-     * replies true if the list of layers managed by this map view contain layer
-     * <p>
-     *
-     * @param layer the layer
-     * @return true if the list of layers managed by this map view contain layer
-     * @deprecated Use !{@link Main#getLayerManager()}.containsLayer() instead.
-     */
-    @Deprecated
-    public boolean hasLayer(Layer layer) {
-        return layerManager.containsLayer(layer);
-    }
-
-    /**
      * Adds a new temporary layer.
      * <p>
@@ -1241,16 +723,4 @@
                 invalidatedListener.invalidate(l);
             }
-        }
-    }
-
-    /**
-     * Sets the title of the JOSM main window, adding a star if there are dirty layers.
-     * @see Main#parent
-     * @deprecated Replaced by {@link MainFrame#refreshTitle()}. The {@link MainFrame} should handle this by itself.
-     */
-    @Deprecated
-    protected void refreshTitle() {
-        if (Main.parent != null) {
-            ((MainFrame) Main.parent).refreshTitle();
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10972)
@@ -304,14 +304,4 @@
     }
 
-    /**
-     * Returns current data set. To be removed: end of 2016.
-     * @return current data set
-     * @deprecated Use {@link Main#getLayerManager()}.getEditDataSet() instead.
-     */
-    @Deprecated
-    protected DataSet getCurrentDataSet() {
-        return Main.getLayerManager().getEditDataSet();
-    }
-
     protected void updateLocationState() {
         if (isVisibleOnScreen()) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10972)
@@ -182,17 +182,4 @@
 
     /**
-     * Return a Color for this layer. Return null when no color specified.
-     * @param ignoreCustom Custom color should return null, as no default color
-     *      is used. When this is true, then even for custom coloring the base
-     *      color is returned - mainly for layer internal use.
-     * @return layer color
-     * @deprecated Use the new {@link #getColorProperty()}. To be removed end of 2016.
-     */
-    @Deprecated
-    public Color getColor(boolean ignoreCustom) {
-        return null;
-    }
-
-    /**
      * Gets the color property to use for this layer.
      * @return The color property.
@@ -619,13 +606,4 @@
 
     /**
-     * @return bytes that the tile will use. Needed for resource management
-     * @deprecated Not used any more.
-     */
-    @Deprecated
-    protected long estimateMemoryUsage() {
-        return 0;
-    }
-
-    /**
      * Gets the strategy that specifies where this layer should be inserted in a layer list.
      * @return That strategy.
Index: trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java	(revision 10972)
@@ -149,20 +149,4 @@
     private final List<ActiveLayerChangeListener> activeLayerChangeListeners = new CopyOnWriteArrayList<>();
     private final List<LayerAvailabilityListener> layerAvailabilityListeners = new CopyOnWriteArrayList<>();
-
-    /**
-     * Adds a active/edit layer change listener
-     *
-     * @param listener the listener.
-     * @param initialFire use {@link #addAndFireActiveLayerChangeListener(ActiveLayerChangeListener)} instead.
-     * @deprecated Do not use the second parameter. To be removed in a few weeks.
-     */
-    @Deprecated
-    public synchronized void addActiveLayerChangeListener(ActiveLayerChangeListener listener, boolean initialFire) {
-        if (initialFire) {
-            addAndFireActiveLayerChangeListener(listener);
-        } else {
-            addActiveLayerChangeListener(listener);
-        }
-    }
 
     /**
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10972)
@@ -280,16 +280,4 @@
      *
      * @param listener the listener. Ignored if null or already registered.
-     * @since 5519
-     * @deprecated Method name contains a typo, use {@link #removeLayerStateChangeListener(LayerStateChangeListener)}.
-     */
-    @Deprecated
-    public void removeLayerPropertyChangeListener(LayerStateChangeListener listener) {
-        removeLayerStateChangeListener(listener);
-    }
-
-    /**
-     * Removes a layer state change listener
-     *
-     * @param listener the listener. Ignored if null or already registered.
      * @since 10340
      */
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10971)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10972)
@@ -8,6 +8,4 @@
 import java.awt.Color;
 import java.awt.Font;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.Transferable;
 import java.awt.font.FontRenderContext;
 import java.awt.font.GlyphVector;
@@ -54,5 +52,4 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.stream.Stream;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.ZipEntry;
@@ -69,5 +66,4 @@
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
@@ -99,37 +95,4 @@
     private Utils() {
         // Hide default constructor for utils classes
-    }
-
-    /**
-     * Tests whether {@code predicate} applies to at least one element from {@code collection}.
-     * <p>
-     * @param <T> type of items
-     * @param collection the collection
-     * @param predicate the predicate
-     * @return {@code true} if {@code predicate} applies to at least one element from {@code collection}
-     * @deprecated use {@link Stream#anyMatch(Predicate)} instead.
-     */
-    @Deprecated
-    public static <T> boolean exists(Iterable<? extends T> collection, Predicate<? super T> predicate) {
-        for (T item : collection) {
-            if (predicate.test(item)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Tests whether {@code predicate} applies to all elements from {@code collection}.
-     * <p>
-     * @param <T> type of items
-     * @param collection the collection
-     * @param predicate the predicate
-     * @return {@code true} if {@code predicate} applies to all elements from {@code collection}
-     * @deprecated use {@link Stream#allMatch(Predicate)} instead.
-     */
-    @Deprecated
-    public static <T> boolean forAll(Iterable<? extends T> collection, Predicate<? super T> predicate) {
-        return !exists(collection, predicate.negate());
     }
 
@@ -580,37 +543,4 @@
         }
         return true;
-    }
-
-    /**
-     * Copies the string {@code s} to system clipboard.
-     * @param s string to be copied to clipboard.
-     * @return true if succeeded, false otherwise.
-     * @deprecated Use {@link ClipboardUtils#copyString(String)}. To be removed end of 2016.
-     */
-    @Deprecated
-    public static boolean copyToClipboard(String s) {
-        return ClipboardUtils.copyString(s);
-    }
-
-    /**
-     * Extracts clipboard content as {@code Transferable} object.
-     * @param clipboard clipboard from which contents are retrieved
-     * @return clipboard contents if available, {@code null} otherwise.
-     * @since 8429
-     * @deprecated Use {@link ClipboardUtils#getClipboardContent(Clipboard)} instead. To be removed end of 2016.
-     */
-    @Deprecated
-    public static Transferable getTransferableContent(Clipboard clipboard) {
-        return ClipboardUtils.getClipboardContent(clipboard);
-    }
-
-    /**
-     * Extracts clipboard content as string.
-     * @return string clipboard contents if available, {@code null} otherwise.
-     * @deprecated Use {@link ClipboardUtils#getClipboardStringContent()}. To be removed end of 2016
-     */
-    @Deprecated
-    public static String getClipboardContent() {
-        return ClipboardUtils.getClipboardStringContent();
     }
 
