Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 2083)
@@ -75,5 +75,5 @@
 
     /**
-     * Registers an upload hook. Adds the hook to the end of the list of upload hooks.
+     * Registers an upload hook. Adds the hook at the first position of the upload hooks.
      * 
      * @param hook the upload hook. Ignored if null.
@@ -82,5 +82,5 @@
         if(hook == null) return;
         if (!uploadHooks.contains(hook)) {
-            uploadHooks.add(hook);
+            uploadHooks.add(0,hook);
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 2083)
@@ -97,9 +97,6 @@
      * the respective class.
      * 
-     * @deprecated use {@see #getId()} and {@see #setId()}. Don't assign an id, create a primitive with
-     * the respective constructors.
-     */
-    @Deprecated
-    public long id = 0;
+     */
+    private long id = 0;
 
     /**
@@ -109,16 +106,12 @@
      * the modified is ignored and the object is added to the server.
      * 
-     * @deprecated Please use {@see #setModified()} and {@see #getModified()}
-     */
-    @Deprecated
-    public boolean modified = false;
+     */
+    private boolean modified = false;
 
     /**
      * <code>true</code>, if the object has been deleted.
      * 
-     * @deprecated use {@see #delete()} and {@see #isDeleted()}
-     */
-    @Deprecated
-    public boolean deleted = false;
+     */
+    private boolean deleted = false;
 
     /**
@@ -127,8 +120,6 @@
      * (they will have visible=false).
      * 
-     * @deprecated use {@see #isVisible()} and {@see #setVisible(boolean)}
-     */
-    @Deprecated
-    public boolean visible = true;
+     */
+    private boolean visible = true;
 
     /**
@@ -141,8 +132,6 @@
      * If set to true, this object is currently selected.
      * 
-     * @deprecated use {@see #isSelected()} and {@see #setSelected(boolean)}
-     */
-    @Deprecated
-    public volatile boolean selected = false;
+     */
+    private volatile boolean selected = false;
 
     /**
@@ -155,9 +144,6 @@
      * Contains the version number as returned by the API. Needed to
      * ensure update consistency
-     * @deprecated use {@see #getVersion()} and {@see #setVersion(long)}
-     */
-    @Deprecated
-    public int version = 0;
-
+     */
+    private int version = 0;
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 2083)
@@ -20,8 +20,6 @@
      * makeBackReferences and/or removeBackReferences should be called.
      * 
-     * @deprecated use the improved API instead of accessing this list directly
-     */
-    @Deprecated
-    public final List<RelationMember> members = new ArrayList<RelationMember>();
+     */
+    private final List<RelationMember> members = new ArrayList<RelationMember>();
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java	(revision 2083)
@@ -11,15 +11,11 @@
     /**
      * 
-     * @deprecated use {@see #getRole()} or create a clone in order to assign a new role
      */
-    @Deprecated
-    public String role;
+    private String role;
 
     /**
      * 
-     * @deprecated use {@see #getMember()} or create a clone in order to assign a new member
      */
-    @Deprecated
-    public OsmPrimitive member;
+    private OsmPrimitive member;
 
     /**
@@ -106,13 +102,4 @@
     }
 
-
-    /**
-     * Default constructor. Does nothing.
-     * @deprecated Use other constructors because RelationMember class will become immutable
-     * in the future
-     */
-    @Deprecated
-    public RelationMember() { }
-
     public RelationMember(String role, OsmPrimitive member) {
         this.role = role;
Index: trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 2083)
@@ -88,41 +88,4 @@
 
     /**
-     * Sets up the dialog. The first button is always the default.
-     * @param parent The parent element that will be used for position and maximum size
-     * @param title The text that will be shown in the window titlebar
-     * @param content Any component that should be show above the buttons (e.g. JLabel)
-     * @param buttonTexts The labels that will be displayed on the buttons
-     * @param buttonIcons The path to the icons that will be displayed on the buttons. Path is relative to JOSM's image directory. File extensions need to be included. If a button should not have an icon pass null.
-     */
-    @Deprecated public ExtendedDialog(Component parent, String title, Component content,
-            String[] buttonTexts, String[] buttonIcons) {
-        super(JOptionPane.getFrameForComponent(parent), title, true /* modal */);
-        this.parent = parent;
-        bTexts = buttonTexts;
-        this.content = content;
-        this.bIcons = buttonIcons;
-        setupDialog();
-        setVisible(true);
-    }
-
-    @Deprecated public ExtendedDialog(Component parent, String title, Component content,
-            String[] buttonTexts) {
-        this(parent, title, content, buttonTexts, null);
-    }
-
-    /**
-     * Sets up the dialog and displays the given message in a breakable label
-     */
-    @Deprecated public ExtendedDialog(Component parent, String title, String message,
-            String[] buttonTexts, String[] buttonIcons) {
-        this(parent, title, string2label(message), buttonTexts, buttonIcons);
-    }
-
-    @Deprecated public ExtendedDialog(Component parent, String title, String message,
-            String[] buttonTexts) {
-        this(parent, title, message, buttonTexts, null);
-    }
-
-    /**
      * Allows decorating the buttons with icons. Expects an String[] with paths
      * to images relative to JOSM/images.
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberListMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberListMergeModel.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberListMergeModel.java	(revision 2083)
@@ -42,6 +42,6 @@
             public boolean isCellEditable(int row, int column) {
                 switch(column) {
-                    case 1: return true;
-                    default: return false;
+                case 1: return true;
+                default: return false;
                 }
             }
@@ -52,6 +52,8 @@
     protected void setValueAt(DefaultTableModel model, Object value, int row, int col) {
         if (model == getMergedTableModel() && col == 1) {
-            RelationMember member = getMergedEntries().get(row);
-            member.role = (String)value;
+            RelationMember memberOld = getMergedEntries().get(row);
+            RelationMember memberNew = new RelationMember((String)value,memberOld.getMember());
+            getMergedEntries().remove(row);
+            getMergedEntries().add(row,memberNew);
             fireModelDataChanged();
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 2082)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 2083)
@@ -106,5 +106,7 @@
     public void setValueAt(Object value, int rowIndex, int columnIndex) {
         RelationMember member = members.get(rowIndex);
-        member.role = value.toString();
+        RelationMember newMember = new RelationMember(value.toString(), member.getMember());
+        members.remove(rowIndex);
+        members.add(rowIndex, newMember);
     }
 
@@ -198,5 +200,6 @@
 
     public void updateMemberReferences(DataSet ds) {
-        for (RelationMember member : members) {
+        for (int i=0; i< members.size();i++) {
+            RelationMember member = members.get(i);
             if (member.getMember().getId() == 0) {
                 continue;
@@ -204,5 +207,7 @@
             OsmPrimitive primitive = ds.getPrimitiveById(member.getMember().getId(), OsmPrimitiveType.from(member.getMember()));
             if (primitive != null) {
-                member.member = primitive;
+                RelationMember newMember = new RelationMember(member.getRole(), primitive);
+                members.remove(i);
+                members.add(i, newMember);
             }
         }
@@ -351,5 +356,8 @@
             return;
         for (int row : idx) {
-            members.get(row).role = role;
+            RelationMember oldMember = members.get(row);
+            RelationMember newMember = new RelationMember(role, oldMember.getMember());
+            members.remove(row);
+            members.add(row, newMember);
         }
         fireTableDataChanged();
