Index: trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 1927)
+++ trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 1928)
@@ -319,7 +319,5 @@
                         for(Way wayToAdd : newWays)
                         {
-                            RelationMember em = new RelationMember();
-                            em.member = wayToAdd;
-                            em.role = rm.role;
+                            RelationMember em = new RelationMember(rm.role, wayToAdd);
                             if(em.role != null && em.role.length() > 0 && !("multipolygon".equals(type))) {
                                 warnmerole = true;
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java	(revision 1927)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java	(revision 1928)
@@ -15,5 +15,8 @@
     /**
      * Default constructor. Does nothing.
+     * @deprecated Use other constructors because RelationMember class will became immutable
+     * in the future
      */
+    @Deprecated
     public RelationMember() { }
 
@@ -38,5 +41,5 @@
     /**
      * Replies true, if this relation member refers to the primitive
-     * 
+     *
      * @param primitive  the primitive to check
      * @return true, if this relation member refers to the primitive
Index: trunk/src/org/openstreetmap/josm/gui/conflict/relation/RelationMemberListMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/relation/RelationMemberListMergeModel.java	(revision 1927)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/relation/RelationMemberListMergeModel.java	(revision 1928)
@@ -100,8 +100,5 @@
     @Override
     protected RelationMember cloneEntryForMergedList(RelationMember entry) {
-        RelationMember member = new RelationMember();
-        member.role = entry.role;
-        member.member = entry.member;
-        return member;
+        return new RelationMember(entry.role, entry.member);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1927)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1928)
@@ -595,7 +595,5 @@
                                     if (rm.member == osm)
                                     {
-                                        RelationMember mem = new RelationMember();
-                                        mem.role = rm.role;
-                                        mem.member = rm.member;
+                                        RelationMember mem = new RelationMember(rm.role, rm.member);
                                         rel.members.remove(mem);
                                         break;
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 1927)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 1928)
@@ -122,5 +122,5 @@
         public String type;
         public long id;
-        public RelationMember relationMember;
+        public String role;
     }
 
@@ -204,5 +204,4 @@
                         throw new SAXException(tr("Found <member> element in non-relation."));
                     RelationMemberData emd = new RelationMemberData();
-                    emd.relationMember = new RelationMember();
                     String value = atts.getValue("ref");
                     if (value == null)
@@ -220,5 +219,5 @@
                     emd.type= value;
                     value = atts.getValue("role");
-                    emd.relationMember.role = value;
+                    emd.role = value;
 
                     if (emd.id == 0)
@@ -393,5 +392,5 @@
      * and populate them later.
      */
-    private void createRelations() {
+    private void createRelations() throws SAXException {
 
         // pass 1 - create all relations
@@ -414,30 +413,30 @@
 
             for (RelationMemberData emd : e.getValue()) {
-                RelationMember em = emd.relationMember;
+                OsmPrimitive member;
                 if (emd.type.equals("node")) {
-                    em.member = findNode(emd.id);
-                    if (em.member == null) {
-                        em.member = new Node(emd.id);
-                        ds.addPrimitive(em.member);
+                    member = findNode(emd.id);
+                    if (member == null) {
+                        member = new Node(emd.id);
+                        ds.addPrimitive(member);
                     }
                 } else if (emd.type.equals("way")) {
-                    em.member = hm.get(emd.id);
-                    if (em.member == null) {
-                        em.member = findWay(emd.id);
-                    }
-                    if (em.member == null) {
-                        em.member = new Way(emd.id);
-                        ds.addPrimitive(em.member);
+                    member = hm.get(emd.id);
+                    if (member == null) {
+                        member = findWay(emd.id);
+                    }
+                    if (member == null) {
+                        member = new Way(emd.id);
+                        ds.addPrimitive(member);
                     }
                 } else if (emd.type.equals("relation")) {
-                    em.member = findRelation(emd.id);
-                    if (em.member == null) {
-                        em.member = new Relation(emd.id);
-                        ds.addPrimitive(em.member);
+                    member = findRelation(emd.id);
+                    if (member == null) {
+                        member = new Relation(emd.id);
+                        ds.addPrimitive(member);
                     }
                 } else {
-                    // this is an error.
+                    throw new SAXException(tr("Unknown relation member type {0}", emd.type));
                 }
-                en.members.add(em);
+                en.members.add(new RelationMember(emd.role, member));
             }
         }
