diff --git a/regtest/dimred/rt-mds/analysis.0.embed.reference b/regtest/dimred/rt-mds/analysis.0.embed.reference
index bfcd2c1e88ce54595c66627548ecfb3cf83829c6..3ebfef2be81d00feef14247ece1453aaf9d7259d 100644
--- a/regtest/dimred/rt-mds/analysis.0.embed.reference
+++ b/regtest/dimred/rt-mds/analysis.0.embed.reference
@@ -1,698 +1,698 @@
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=650626174834469268094976.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0873   mds.2=0.0013   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7551   c1.moment-3=1.3322   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3443064697932843889721344.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0535   mds.2=0.0044   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7434   c1.moment-3=1.3003   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=4334990767809816147525632.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0150   mds.2=0.0044   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7333   c1.moment-3=1.2632   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1642551053927491148185600.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0136  mds.2=0.0019   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7283   c1.moment-3=1.2349   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=565077236443374117978112.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0308  mds.2=-0.0012  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7268   c1.moment-3=1.2175   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=506902826865531421720576.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0355  mds.2=-0.0018  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7262   c1.moment-3=1.2128   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3497441683667193365004288.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0090  mds.2=-0.0015  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7327   c1.moment-3=1.2385   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=5816989471131786348068864.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0145   mds.2=0.0004   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7371   c1.moment-3=1.2616   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=5197629206541778607407104.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0191   mds.2=0.0022   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7366   c1.moment-3=1.2666   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=22568578815140474208124928.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0278   mds.2=0.0015   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7394   c1.moment-3=1.2748   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=8891751619370481308663808.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0091   mds.2=-0.0004  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7365   c1.moment-3=1.2562   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=145469732262582499147776.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0359  mds.2=-0.0012  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7255   c1.moment-3=1.2126   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=67243488566443176361984.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0540  mds.2=0.0004   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7193   c1.moment-3=1.1955   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=991674944473569693794304.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0322  mds.2=-0.0034  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7286   c1.moment-3=1.2156   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=433704577708501378269184.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0205  mds.2=-0.0150  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7429   c1.moment-3=1.2239   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=58924815689464923815936.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0282  mds.2=-0.0289  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7542   c1.moment-3=1.2128   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=28876419368888716754944.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0530  mds.2=-0.0358  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7544   c1.moment-3=1.1871   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=29493206461009996283904.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0769  mds.2=-0.0312  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7438   c1.moment-3=1.1652   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=15523379316519734345728.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0893  mds.2=-0.0259  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7355   c1.moment-3=1.1546   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=6036949107489532542976.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0697  mds.2=-0.0246  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7393   c1.moment-3=1.1739   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=6805982676529049501696.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
-REMARK mds.1=-0.0301  mds.2=-0.0196  
+REMARK mds.1=-0.0302  mds.2=-0.0196  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7448   c1.moment-3=1.2133   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=224283114659648425164800.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0093   mds.2=-0.0072  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7430   c1.moment-3=1.2547   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1937631236154971427700736.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0274   mds.2=0.0009   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7400   c1.moment-3=1.2742   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=8943884514170369755578368.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0301   mds.2=0.0016   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7400   c1.moment-3=1.2770   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1818542782073875176882176.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0265   mds.2=-0.0033  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7438   c1.moment-3=1.2723   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=356284804122361993363456.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0433   mds.2=-0.0053  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7501   c1.moment-3=1.2879   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=740928158795493248335872.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0514   mds.2=-0.0019  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7489   c1.moment-3=1.2967   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3971376819483128291655680.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0222   mds.2=0.0031   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7365   c1.moment-3=1.2698   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3616045831357711704391680.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0129  mds.2=0.0061   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7245   c1.moment-3=1.2366   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=866118050097568367509504.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0322  mds.2=0.0084   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7172   c1.moment-3=1.2186   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=473876430918082860417024.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0355  mds.2=0.0080   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7168   c1.moment-3=1.2153   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=549108949631639043964928.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0337  mds.2=0.0067   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7185   c1.moment-3=1.2168   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=714866179522068016529408.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0308  mds.2=0.0047   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7211   c1.moment-3=1.2191   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1514315762407424940572672.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0253  mds.2=0.0016   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7255   c1.moment-3=1.2235   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1741401785128748918505472.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0132  mds.2=-0.0021  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7323   c1.moment-3=1.2343   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3707685932716769910194176.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0040   mds.2=-0.0031  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7377   c1.moment-3=1.2506   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=5279612145243834875379712.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0107   mds.2=0.0011   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7354   c1.moment-3=1.2582   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=14648991633879816569094144.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0299   mds.2=0.0060   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7357   c1.moment-3=1.2780   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=101745406227893881592086528.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0540   mds.2=0.0070   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7410   c1.moment-3=1.3015   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=77977698769596315733065728.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0650   mds.2=0.0039   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7468   c1.moment-3=1.3114   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=5438198764112726743580672.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0415   mds.2=0.0025   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7421   c1.moment-3=1.2882   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1122421932113435130068992.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0074   mds.2=0.0033   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7325   c1.moment-3=1.2555   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1623375579255821794541568.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0185  mds.2=0.0059   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7232   c1.moment-3=1.2312   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=824284132438079344476160.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0413  mds.2=0.0073   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7158   c1.moment-3=1.2096   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=418023780265421327826944.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0548  mds.2=0.0074   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7123   c1.moment-3=1.1966   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=524201540254286764572672.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0385  mds.2=0.0041   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7197   c1.moment-3=1.2114   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=255645304728742904463360.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0383  mds.2=-0.0006  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7243   c1.moment-3=1.2104   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=80831060875928311693312.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0584  mds.2=-0.0008  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7192   c1.moment-3=1.1910   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=410072896508362208837632.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0584  mds.2=0.0023   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7162   c1.moment-3=1.1918   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=473315368593257205334016.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0553  mds.2=0.0090   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7105   c1.moment-3=1.1965   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=49342818148888732499968.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0772  mds.2=0.0146   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6995   c1.moment-3=1.1768   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=71439214621479799881728.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0757  mds.2=0.0157   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6988   c1.moment-3=1.1785   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=372382770456105985245184.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0644  mds.2=0.0144   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7030   c1.moment-3=1.1891   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=396750501333421147553792.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0816  mds.2=0.0141   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6988   c1.moment-3=1.1724   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=194367523462455551328256.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1045  mds.2=0.0148   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6922   c1.moment-3=1.1504   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=265390023546441746612224.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0867  mds.2=0.0111   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7004   c1.moment-3=1.1667   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=417842650383208029356032.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0365  mds.2=0.0014   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7228   c1.moment-3=1.2126   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=130034479906962406375424.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0113   mds.2=-0.0067  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7431   c1.moment-3=1.2567   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=453748863537616517070848.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0272   mds.2=-0.0074  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7479   c1.moment-3=1.2718   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=2549987501327281773608960.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0381   mds.2=-0.0012  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7448   c1.moment-3=1.2840   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3357671899518696282914816.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0548   mds.2=0.0021   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7459   c1.moment-3=1.3010   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=2973694890310422329556992.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0470   mds.2=0.0012   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7447   c1.moment-3=1.2933   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=288602953154320790454272.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0227   mds.2=-0.0019  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7414   c1.moment-3=1.2690   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1760887739729704734687232.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0132   mds.2=-0.0022  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7392   c1.moment-3=1.2597   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1526973208100442807992320.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0040   mds.2=0.0004   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7343   c1.moment-3=1.2515   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=375263178685270183641088.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0045  mds.2=0.0008   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7317   c1.moment-3=1.2434   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=232661556808622295482368.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0145  mds.2=0.0006   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7293   c1.moment-3=1.2337   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=507064184978749788258304.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0116  mds.2=0.0025   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7282   c1.moment-3=1.2370   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1128952088522002253479936.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0031  mds.2=0.0044   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7286   c1.moment-3=1.2457   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1197960641606570746052608.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0148  mds.2=0.0086   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7216   c1.moment-3=1.2355   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=625774095016588059082752.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0318  mds.2=0.0109   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7149   c1.moment-3=1.2196   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=364912544013506169536512.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0166  mds.2=0.0078   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7218   c1.moment-3=1.2336   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1649391353916835862937600.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0154   mds.2=0.0036   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7342   c1.moment-3=1.2633   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=11346816644974575838298112.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0451   mds.2=0.0018   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7437   c1.moment-3=1.2915   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=20791509453694539808112640.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0364   mds.2=0.0021   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7411   c1.moment-3=1.2832   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1867515982473692874539008.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0125   mds.2=0.0036   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7335   c1.moment-3=1.2606   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=11344083134102028704284672.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0330   mds.2=0.0045   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7379   c1.moment-3=1.2806   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=120911330589421810499977216.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0605   mds.2=0.0048   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7448   c1.moment-3=1.3072   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=40351160276202809800523776.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0417   mds.2=0.0041   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7406   c1.moment-3=1.2889   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=9235968903630373689229312.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0115   mds.2=0.0011   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7356   c1.moment-3=1.2590   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=15198595282354971818852352.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0257   mds.2=-0.0018  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7421   c1.moment-3=1.2719   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=14695620601365390340128768.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0451   mds.2=-0.0029  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7483   c1.moment-3=1.2904   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=3504618985646781185916928.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0387   mds.2=-0.0032  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7469   c1.moment-3=1.2841   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1958037545372794977517568.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0254   mds.2=-0.0017  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7420   c1.moment-3=1.2716   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=7729740074168141073088512.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0311   mds.2=-0.0001  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7418   c1.moment-3=1.2775   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=26429041345273132897796096.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0448   mds.2=0.0006   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7448   c1.moment-3=1.2909   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=37403428414373558822633472.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0499   mds.2=0.0020   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7448   c1.moment-3=1.2962   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=69071824065210548899282944.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0543   mds.2=0.0037   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7443   c1.moment-3=1.3009   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=28746486049325375245254656.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0486   mds.2=0.0054   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7412   c1.moment-3=1.2959   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=5138199027537960106983424.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0459   mds.2=0.0051   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7407   c1.moment-3=1.2932   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=20730130763570579884736512.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0715   mds.2=-0.0001  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7524   c1.moment-3=1.3166   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=10053248420830524810985472.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0764   mds.2=-0.0063  
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.7596   c1.moment-3=1.3196   
+REMARK c1.moment-2=0.7597   c1.moment-3=1.3196   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=2341097486254890020765696.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0603   mds.2=-0.0119  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7609   c1.moment-3=1.3027   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1801241546807460694589440.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0378   mds.2=-0.0153  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7583   c1.moment-3=1.2800   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=2623886374903733202976768.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0214   mds.2=-0.0124  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7512   c1.moment-3=1.2649   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1540127025264497029808128.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0063   mds.2=-0.0091  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7441   c1.moment-3=1.2513   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=761250478060893041065984.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0095  mds.2=-0.0016  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7327   c1.moment-3=1.2380   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=815550859201229044580352.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0259  mds.2=0.0036   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7234   c1.moment-3=1.2235   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=1031052805964853080489984.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0234  mds.2=0.0061   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7217   c1.moment-3=1.2265   
 END
 DESCRIPTION: analysis data from calculation done at time 5.000000 
-REMARK WEIGHT=828970472636431535702016.0000
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0012   mds.2=0.0060   
 REMARK ARG=c1.moment-2,c1.moment-3
diff --git a/regtest/dimred/rt-mds/analysis.0.list_embed.reference b/regtest/dimred/rt-mds/analysis.0.list_embed.reference
index ce29c25f6a5ecf50ae070443c00face1089a9d06..185b19ed5558aa853b2fd67022b2c0c1250983a2 100644
--- a/regtest/dimred/rt-mds/analysis.0.list_embed.reference
+++ b/regtest/dimred/rt-mds/analysis.0.list_embed.reference
@@ -19,7 +19,7 @@
  -0.0769  -0.0312 
  -0.0893  -0.0259 
  -0.0697  -0.0246 
- -0.0301  -0.0196 
+ -0.0302  -0.0196 
   0.0093  -0.0072 
   0.0274   0.0009 
   0.0301   0.0016 
diff --git a/regtest/dimred/rt-mds/embed.reference b/regtest/dimred/rt-mds/embed.reference
index 8ecbcfdae735a3b83db48ea0b5db1d88179d9a6f..336cec6f8141b43fd3bbf4c0f9d630e6cf3550ad 100644
--- a/regtest/dimred/rt-mds/embed.reference
+++ b/regtest/dimred/rt-mds/embed.reference
@@ -1,698 +1,698 @@
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0008  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0594   mds.2=0.0053   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7340   c1.moment-3=1.2672   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0012  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0683   mds.2=0.0034   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7371   c1.moment-3=1.2758   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0705   mds.2=0.0006   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7401   c1.moment-3=1.2777   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0010  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0729   mds.2=-0.0019  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7428   c1.moment-3=1.2796   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0022  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0874   mds.2=-0.0069  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7497   c1.moment-3=1.2934   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0019  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0961   mds.2=-0.0095  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7533   c1.moment-3=1.3018   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0023  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0867   mds.2=-0.0062  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7489   c1.moment-3=1.2928   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0030  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0719   mds.2=-0.0008  
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.7417   c1.moment-3=1.2788   
+REMARK c1.moment-2=0.7417   c1.moment-3=1.2789   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0118  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0575   mds.2=0.0031   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7360   c1.moment-3=1.2651   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0063  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0552   mds.2=0.0034   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7354   c1.moment-3=1.2628   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0022  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0682   mds.2=-0.0002  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7405   c1.moment-3=1.2753   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0029  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0781   mds.2=-0.0024  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7440   c1.moment-3=1.2847   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0010  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0785   mds.2=-0.0025  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7441   c1.moment-3=1.2852   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0763   mds.2=-0.0027  
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.7441   c1.moment-3=1.2829   
+REMARK c1.moment-2=0.7441   c1.moment-3=1.2830   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0013  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0755   mds.2=-0.0041  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7454   c1.moment-3=1.2820   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0069  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0792   mds.2=-0.0069  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7486   c1.moment-3=1.2853   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0096  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0778   mds.2=-0.0062  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7477   c1.moment-3=1.2840   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0076  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0727   mds.2=-0.0025  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7434   c1.moment-3=1.2795   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0143  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0726   mds.2=0.0014   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7396   c1.moment-3=1.2798   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0302  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0756   mds.2=0.0030   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7384   c1.moment-3=1.2830   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0171  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0821   mds.2=0.0017   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7405   c1.moment-3=1.2893   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0013  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0816   mds.2=0.0001   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7420   c1.moment-3=1.2886   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0167  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0774   mds.2=0.0008   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7407   c1.moment-3=1.2845   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0234  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0766   mds.2=0.0008   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7407   c1.moment-3=1.2837   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0171  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0838   mds.2=-0.0005  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7429   c1.moment-3=1.2906   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0265  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0931   mds.2=-0.0016  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7452   c1.moment-3=1.2997   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0521  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0936   mds.2=-0.0010  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7446   c1.moment-3=1.3004   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0504  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0923   mds.2=-0.0009  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7443   c1.moment-3=1.2990   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0443  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0906   mds.2=-0.0008  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7440   c1.moment-3=1.2974   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0270  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0706   mds.2=0.0025   
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.7382   c1.moment-3=1.2780   
+REMARK c1.moment-2=0.7382   c1.moment-3=1.2779   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0120  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0664   mds.2=0.0050   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7352   c1.moment-3=1.2741   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0517  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0901   mds.2=0.0019   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7412   c1.moment-3=1.2972   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0821  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.1059   mds.2=-0.0015  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7467   c1.moment-3=1.3125   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0206  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0917   mds.2=0.0006   
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.7428   c1.moment-3=1.2986   
+REMARK c1.moment-2=0.7428   c1.moment-3=1.2987   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0206  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0876   mds.2=0.0021   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7407   c1.moment-3=1.2948   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0207  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.1008   mds.2=-0.0001  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7446   c1.moment-3=1.3076   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0270  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0955   mds.2=-0.0014  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7452   c1.moment-3=1.3022   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0171  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0858   mds.2=-0.0018  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7444   c1.moment-3=1.2925   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0345  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0894   mds.2=-0.0005  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7436   c1.moment-3=1.2963   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0819  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0922   mds.2=0.0014   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7420   c1.moment-3=1.2992   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.1159  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0917   mds.2=0.0010   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7423   c1.moment-3=1.2987   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0266  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0925   mds.2=-0.0043  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7477   c1.moment-3=1.2989   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0072  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0967   mds.2=-0.0102  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7541   c1.moment-3=1.3023   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0358  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.1073   mds.2=-0.0096  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7548   c1.moment-3=1.3129   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0264  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.1065   mds.2=-0.0047  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7499   c1.moment-3=1.3126   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0087  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0935   mds.2=-0.0003  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7439   c1.moment-3=1.3003   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0055  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0668   mds.2=0.0049   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7353   c1.moment-3=1.2745   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0047  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
-REMARK mds.1=0.0411   mds.2=0.0087   
+REMARK mds.1=0.0410   mds.2=0.0086   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7284   c1.moment-3=1.2494   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0049  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0264   mds.2=0.0110   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7242   c1.moment-3=1.2352   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0014  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0254   mds.2=0.0125   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7226   c1.moment-3=1.2344   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0015  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0503   mds.2=0.0085   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7297   c1.moment-3=1.2586   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0025  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0855   mds.2=0.0007   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7419   c1.moment-3=1.2925   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0045  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0975   mds.2=-0.0028  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7469   c1.moment-3=1.3039   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0336  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0983   mds.2=-0.0035  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7477   c1.moment-3=1.3047   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0570  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0997   mds.2=-0.0044  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7487   c1.moment-3=1.3059   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0021  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0877   mds.2=-0.0021  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7449   c1.moment-3=1.2944   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0002  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0501   mds.2=0.0053   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7328   c1.moment-3=1.2580   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0104   mds.2=0.0140   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7192   c1.moment-3=1.2197   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0009  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0199  mds.2=0.0221   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7074   c1.moment-3=1.1907   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0416  mds.2=0.0277   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6990   c1.moment-3=1.1698   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0688  mds.2=0.0338   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6895   c1.moment-3=1.1436   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0858  mds.2=0.0354   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6858   c1.moment-3=1.1269   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0897  mds.2=0.0313   
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.6894   c1.moment-3=1.1226   
+REMARK c1.moment-2=0.6894   c1.moment-3=1.1225   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0920  mds.2=0.0254   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6950   c1.moment-3=1.1195   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1168  mds.2=0.0227   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6945   c1.moment-3=1.0946   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0001  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1447  mds.2=0.0227   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6910   c1.moment-3=1.0669   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1636  mds.2=0.0221   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6892   c1.moment-3=1.0481   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0011  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1461  mds.2=0.0182   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6953   c1.moment-3=1.0650   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1212  mds.2=0.0139   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7027   c1.moment-3=1.0891   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0005  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0775  mds.2=0.0056   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7164   c1.moment-3=1.1314   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0004  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0008  mds.2=-0.0041  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7358   c1.moment-3=1.2063   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0007  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0469   mds.2=-0.0038  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7415   c1.moment-3=1.2537   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0074  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0771   mds.2=-0.0004  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7419   c1.moment-3=1.2840   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0384  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0917   mds.2=0.0005   
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.7428   c1.moment-3=1.2986   
+REMARK c1.moment-2=0.7428   c1.moment-3=1.2987   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0153  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0656   mds.2=0.0042   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7359   c1.moment-3=1.2732   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0016  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0034  mds.2=0.0115   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7200   c1.moment-3=1.2057   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0006  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0901  mds.2=0.0141   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7064   c1.moment-3=1.1200   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0005  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1784  mds.2=0.0069   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7024   c1.moment-3=1.0315   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0002  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2253  mds.2=-0.0077  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7109   c1.moment-3=0.9832   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0001  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2372  mds.2=-0.0248  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7264   c1.moment-3=0.9692   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2415  mds.2=-0.0448  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7456   c1.moment-3=0.9624   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2562  mds.2=-0.0539  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7529   c1.moment-3=0.9466   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2901  mds.2=-0.0433  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7381   c1.moment-3=0.9144   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.3173  mds.2=-0.0215  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7130   c1.moment-3=0.8902   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.3117  mds.2=0.0096   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6829   c1.moment-3=0.8996   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2787  mds.2=0.0317   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6651   c1.moment-3=0.9352   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.2319  mds.2=0.0372   
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.6656   c1.moment-3=0.9823   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1897  mds.2=0.0305   
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.6776   c1.moment-3=1.0233   
+REMARK c1.moment-2=0.6775   c1.moment-3=1.0233   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0001  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.1592  mds.2=0.0142   
 REMARK ARG=c1.moment-2,c1.moment-3
-REMARK c1.moment-2=0.6975   c1.moment-3=1.0515   
+REMARK c1.moment-2=0.6975   c1.moment-3=1.0514   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
-REMARK mds.1=-0.1211  mds.2=-0.0049  
+REMARK mds.1=-0.1212  mds.2=-0.0049  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7213   c1.moment-3=1.0868   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0960  mds.2=-0.0150  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7345   c1.moment-3=1.1105   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0001  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0842  mds.2=-0.0162  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7372   c1.moment-3=1.1221   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0001  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0813  mds.2=-0.0187  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7401   c1.moment-3=1.1246   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0823  mds.2=-0.0193  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7406   c1.moment-3=1.1235   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0773  mds.2=-0.0179  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7398   c1.moment-3=1.1287   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0621  mds.2=-0.0202  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7440   c1.moment-3=1.1435   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0449  mds.2=-0.0215  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7475   c1.moment-3=1.1604   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0269  mds.2=-0.0307  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7589   c1.moment-3=1.1770   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0000  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=-0.0075  mds.2=-0.0368  
 REMARK ARG=c1.moment-2,c1.moment-3
 REMARK c1.moment-2=0.7673   c1.moment-3=1.1955   
 END
 DESCRIPTION: analysis data from calculation done at time 10.000000 
-REMARK WEIGHT=0.0002  
+REMARK WEIGHT=1.0000  
 REMARK PROPERTIES=mds.1,mds.2
 REMARK mds.1=0.0266   mds.2=-0.0342  
 REMARK ARG=c1.moment-2,c1.moment-3
diff --git a/regtest/dimred/rt-mds/list_embed.reference b/regtest/dimred/rt-mds/list_embed.reference
index 2f4fb6096a9baef0d55b0c24a64cc504a1b9021a..b24c465dfceac9021d1e5b3dec7800870f408522 100644
--- a/regtest/dimred/rt-mds/list_embed.reference
+++ b/regtest/dimred/rt-mds/list_embed.reference
@@ -46,7 +46,7 @@
   0.1065  -0.0047 
   0.0935  -0.0003 
   0.0668   0.0049 
-  0.0411   0.0087 
+  0.0410   0.0086 
   0.0264   0.0110 
   0.0254   0.0125 
   0.0503   0.0085 
@@ -88,7 +88,7 @@
  -0.2319   0.0372 
  -0.1897   0.0305 
  -0.1592   0.0142 
- -0.1211  -0.0049 
+ -0.1212  -0.0049 
  -0.0960  -0.0150 
  -0.0842  -0.0162 
  -0.0813  -0.0187 
diff --git a/regtest/dimred/rt-mds/plumed.dat b/regtest/dimred/rt-mds/plumed.dat
index 1c63ced777d2fdf193f3b62edd3ccae373a17bd9..e74a9549425442c105389e8ab42cd2f853d02273 100755
--- a/regtest/dimred/rt-mds/plumed.dat
+++ b/regtest/dimred/rt-mds/plumed.dat
@@ -17,7 +17,7 @@ UPPER_WALLS ARG=d7 AT=2.0 KAPPA=100.
 
 COORDINATIONNUMBER SPECIES=1-7 MOMENTS=2-3 SWITCH={RATIONAL R_0=1.5 NN=8 MM=16} LABEL=c1
 
-oo: EUCLIDEAN_DISSIMILARITIES ARG=c1.moment-2,c1.moment-3 STRIDE=10 RUN=1000 REWEIGHT_TEMP=0.1 TEMP=0.2
+oo: EUCLIDEAN_DISSIMILARITIES ARG=c1.moment-2,c1.moment-3 STRIDE=10 RUN=1000 
 
 CLASSICAL_MDS ... 
   USE_OUTPUT_DATA_FROM=oo
diff --git a/src/analysis/AnalysisBase.h b/src/analysis/AnalysisBase.h
index 2717ce3873b9b40a189d31367f997ba9e3bb319e..7893e9782f788422f5b6e9af7af06c9227c18639 100644
--- a/src/analysis/AnalysisBase.h
+++ b/src/analysis/AnalysisBase.h
@@ -82,7 +82,7 @@ public:
 /// Get the ith data point
   virtual void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ;
 /// Get a reference configuration (in dimensionality reduction this returns the projection)
-  virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection );
+  virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata  );
 /// Get the input configuration (in dimensionality reduction this returns the high dimensional configuration)
   virtual ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata );
 /// This actually performs the analysis
@@ -159,8 +159,8 @@ void AnalysisBase::getDataPoint( const unsigned& idata, std::vector<double>& poi
 }
 
 inline
-ReferenceConfiguration* AnalysisBase::getReferenceConfiguration( const unsigned& idata, bool& isprojection ){
-  return mydata->getReferenceConfiguration( idata, isprojection );
+ReferenceConfiguration* AnalysisBase::getReferenceConfiguration( const unsigned& idata ){
+  return mydata->getReferenceConfiguration( idata );
 }
 
 inline
diff --git a/src/analysis/AnalysisWithDataCollection.cpp b/src/analysis/AnalysisWithDataCollection.cpp
index 61ddf9edde9f69406c4841ed6dd0324f64f81d56..1d3586edca0cb492294a2a2219eb75a838517fd2 100644
--- a/src/analysis/AnalysisWithDataCollection.cpp
+++ b/src/analysis/AnalysisWithDataCollection.cpp
@@ -36,7 +36,10 @@ void AnalysisWithDataCollection::registerKeywords( Keywords& keys ){
   AnalysisBase::registerKeywords( keys );
   keys.use("ARG"); keys.reset_style("ARG","atoms-1");
   keys.add("atoms-1","ATOMS","the atoms whose positions we are tracking for the purpose of analysing the data");
-  keys.add("hidden","METRIC","how are we measuring the distances between configurations. If you have only arguments this will by default be the euclidean metric. You must specify a metric if you are analysing atoms");
+  keys.add("hidden","METRIC","how are we measuring the distances between configurations. If you have only arguments this will by default be the euclidean "
+                             "metric. You must specify a metric if you are analysing atoms.  You can choose any of the metrics described in the part of the "
+                             "manual on \\ref dists.  If your metric involves multiple different blocks of atoms then you can use repeated ATOMS keywords "
+                             "i.e. ATOMS1, ATOMS2 etc.  You can also add additional information on your metric in this command.");
   keys.add("atoms-1","STRIDE","the frequency with which data should be stored for analysis.  By default data is collected on every step");
   keys.add("atoms-1","RUN","the frequency with which to run the analysis algorithms.");
   keys.addFlag("USE_ALL_DATA",false,"just analyse all the data in the trajectory.  This option should be used in tandem with ATOMS/ARG + STRIDE");
@@ -75,21 +78,38 @@ old_norm(0.0)
       // we must collect data from the trajectory
       } else {
          // Get information on numbers of atoms and argument names
-         std::vector<AtomNumber> atom_numbers; std::vector<std::string> argument_names( getNumberOfArguments() );
+         std::vector<std::string> argument_names( getNumberOfArguments() );
          for(unsigned i=0;i<getNumberOfArguments();++i) argument_names[i]=getPntrToArgument(i)->getName();
-
+         if( getNumberOfArguments()>0 ) mypdb.addArgumentNames( argument_names );
          // Read in information on the metric that is being used in this analysis object
-         parse("METRIC",metricname);
-         if( metricname.length()==0 ) metricname="EUCLIDEAN";
+         std::string metrictmp; parse("METRIC",metrictmp); 
+         if( metrictmp.length()==0 ){
+             metricname="EUCLIDEAN";
+         } else {
+             std::vector<std::string> metricwords = Tools::getWords( metrictmp );
+             metricname=metricwords[0]; metricwords.erase(metricwords.begin()); 
+             mypdb.addRemark( metricwords );
+         }
          ReferenceConfiguration* checkref=metricRegister().create<ReferenceConfiguration>( metricname );
          // Check if we should read atoms
          ReferenceAtoms* hasatoms=dynamic_cast<ReferenceAtoms*>( checkref );
          if( hasatoms ){
-             parseAtomList("ATOMS",atom_numbers); requestAtoms(atom_numbers);
-             if( atom_numbers.size()==0 ) error("no atom positions have been specified in input");
-             log.printf("  monitoring positions of atoms ");
-             for(unsigned i=0;i<atom_numbers.size();++i) log.printf("%d ",atom_numbers[i].serial() );
-             log.printf("\n");
+             std::vector<AtomNumber> atom_numbers; parseAtomList("ATOMS",atom_numbers); 
+             if( atom_numbers.size()>0 ){ 
+                log.printf("  monitoring positions of atoms ");
+                for(unsigned i=0;i<atom_numbers.size();++i) log.printf("%d ",atom_numbers[i].serial() );
+                log.printf("\n"); mypdb.addBlockEnd( atom_numbers.size() );
+             } else {
+                std::vector<AtomNumber> tmpatoms; mypdb.addBlockEnd(0);
+                for(unsigned i=1;;++i){
+                    parseAtomList("ATOMS",i,tmpatoms);
+                    if( i==1 && tmpatoms.size()==0 ) error("no atom positions have been specified in input");
+                    else if( tmpatoms.size()==0 ) break;
+                    for(unsigned j=0;j<tmpatoms.size();++j) atom_numbers.push_back( tmpatoms[j] );
+                    mypdb.addBlockEnd( atom_numbers.size() );
+                }
+             }
+             requestAtoms(atom_numbers); mypdb.setAtomNumbers( atom_numbers );
          }
          // Check if we should read arguments
          ReferenceArguments* hasargs=dynamic_cast<ReferenceArguments*>( checkref );
@@ -107,10 +127,7 @@ old_norm(0.0)
              // Setup everything given the ammount of data that we will have in each analysis 
              if( freq%getStride()!= 0 ) error("Frequncy of running is not a multiple of the stride");
              unsigned ndata=freq/getStride(); data.resize(ndata); logweights.resize( ndata );
-             for(unsigned i=0;i<ndata;++i){
-                data[i]=metricRegister().create<ReferenceConfiguration>( metricname );
-                data[i]->setNamesAndAtomNumbers( atom_numbers, argument_names );
-             }
+             for(unsigned i=0;i<ndata;++i) data[i]=metricRegister().create<ReferenceConfiguration>( metricname );
              log.printf("  running analysis every %u steps\n",freq);
              // Check if we are doing block averaging
              parseFlag("NOMEMORY",nomemory);
@@ -189,10 +206,10 @@ void AnalysisWithDataCollection::readCheckPointFile( const std::string& filename
   if(fp!=NULL){
      bool do_read=true, first=true;
      while (do_read) {
-        PDB mypdb;
-        do_read=mypdb.readFromFilepointer(fp,plumed.getAtoms().usingNaturalUnits(),0.1/atoms.getUnits().getLength());
+        PDB tpdb;
+        do_read=tpdb.readFromFilepointer(fp,plumed.getAtoms().usingNaturalUnits(),0.1/atoms.getUnits().getLength());
         if(do_read){
-           data[idata]->set( mypdb );
+           data[idata]->set( tpdb );
            data[idata]->parse("TIME",tstep);
            if( !first && ((tstep-oldtstep) - getStride()*plumed.getAtoms().getTimeStep())>plumed.getAtoms().getTimeStep() ){
               error("frequency of data storage in " + filename + " is not equal to frequency of data storage plumed.dat file");
@@ -229,9 +246,9 @@ void AnalysisWithDataCollection::getDataPoint( const unsigned& idat, std::vector
   }
 }
 
-ReferenceConfiguration* AnalysisWithDataCollection::getReferenceConfiguration( const unsigned& idat, bool& isprojection ){
-  if( !mydata ){ plumed_dbg_assert( idat<data.size() ); isprojection=false; return data[idat]; }
-  return AnalysisBase::getReferenceConfiguration( idat, isprojection );
+ReferenceConfiguration* AnalysisWithDataCollection::getReferenceConfiguration( const unsigned& idat ){
+  if( !mydata ){ plumed_dbg_assert( idat<data.size() ); return data[idat]; }
+  return AnalysisBase::getReferenceConfiguration( idat );
 }
 
 ReferenceConfiguration* AnalysisWithDataCollection::getInputReferenceConfiguration( const unsigned& idat ){
@@ -259,24 +276,22 @@ void AnalysisWithDataCollection::update(){
       // Reweighting because of biases
       if( !biases.empty() ) ww += bias/simtemp;
 
-      // Get the arguments ready to transfer to reference configuration
-      std::vector<double> current_args( getNumberOfArguments() );
-      for(unsigned i=0;i<getNumberOfArguments();++i) current_args[i]=getArgument(i);
-      // Could add stuff for fancy metrics here eventually but for now unecessary
-      std::vector<double> mymetric( getNumberOfArguments(), 1.0 );
-
+      // Pass the atom positions to the pdb
+      mypdb.setAtomPositions( getPositions() );
+      // Pass the argument values to the pdb
+      for(unsigned i=0;i<getNumberOfArguments();++i){
+         mypdb.setArgumentValue( getPntrToArgument(i)->getName(), getArgument(i) ); 
+      }
+      // Could add stuff for mahalanobis distance etc here eventually but for now unecessary
+ 
       if(use_all_data){
          data.push_back( metricRegister().create<ReferenceConfiguration>( metricname ) );
          plumed_dbg_assert( data.size()==idata+1 ); 
-         std::vector<std::string> argument_names( getNumberOfArguments() );
-         for(unsigned i=0;i<getNumberOfArguments();++i) argument_names[i] = getPntrToArgument(i)->getName();
-         data[idata]->setNamesAndAtomNumbers( getAbsoluteIndexes(), argument_names );
-         data[idata]->setReferenceConfig( getPositions(), current_args, mymetric );
-         logweights.push_back(ww);
+         data[idata]->set( mypdb ); logweights.push_back(ww);
       } else {
          // Get the arguments and store them in a vector of vectors
-         data[idata]->setReferenceConfig( getPositions(), current_args, mymetric );
-         logweights[idata] = ww;
+         // We have to clear all properties from previous analyses prior to setting the data
+         data[idata]->clearAllProperties(); data[idata]->set( mypdb ); logweights[idata] = ww;
       }
 
       // Write data to checkpoint file
diff --git a/src/analysis/AnalysisWithDataCollection.h b/src/analysis/AnalysisWithDataCollection.h
index 2a54464dbf873c7d0cd2102d1891c330f96da783..97ec59d8eceafc916a77b028a01fbef7b0dc61a0 100644
--- a/src/analysis/AnalysisWithDataCollection.h
+++ b/src/analysis/AnalysisWithDataCollection.h
@@ -23,6 +23,7 @@
 #define __PLUMED_analysis_AnalysisWithDataCollection_h
 
 #include "AnalysisBase.h"
+#include "tools/PDB.h"
 
 namespace PLMD {
 
@@ -52,8 +53,9 @@ private:
   bool firstAnalysisDone;
 /// The value of the old normalization constant
   double norm, old_norm;
-/// List of argument names 
-  std::vector<std::string> argument_names;
+/// Data is collected from the trajectory by passing it to this pdb.  These pdb
+/// files are then read by the ReferenceConfigurations in data
+  PDB mypdb;
 /// The type of metric we are using to measure distances
   std::string metricname;
 /// The checkpoint file --- really I would like to get rid of this and have some universal mechanism and a single file GT
@@ -88,7 +90,7 @@ public:
 /// Get the ith data point
   virtual void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ;
 /// Get a reference configuration (in dimensionality reduction this returns the projection)
-  virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, bool& isprojection );
+  virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat );
 /// Get the underlying reference configuration (in dimensionality reduction this return the high dimensional point)
   ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idat );
 /// This ensures that the energy is stored if we are reweighting
diff --git a/src/analysis/EuclideanDissimilarityMatrix.cpp b/src/analysis/EuclideanDissimilarityMatrix.cpp
index 2e5cd733ea95e460260ebf4911726bb0b28a2c61..d8d8ac5686ae8072d1404e4f1bc2c5f223bed72a 100644
--- a/src/analysis/EuclideanDissimilarityMatrix.cpp
+++ b/src/analysis/EuclideanDissimilarityMatrix.cpp
@@ -73,8 +73,7 @@ double EuclideanDissimilarityMatrix::getDissimilarity( const unsigned& iframe, c
   plumed_dbg_assert( iframe<dissimilarities.nrows() && jframe<dissimilarities.ncols() );
   if( dissimilarities(iframe,jframe)>0. ){ return dissimilarities(iframe,jframe); }
   if( iframe!=jframe ){ 
-     bool ignore;
-     dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = distance( getPbc(), getArguments(), getReferenceConfiguration(iframe,ignore), getReferenceConfiguration(jframe,ignore), true ); 
+     dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = distance( getPbc(), getArguments(), getReferenceConfiguration(iframe), getReferenceConfiguration(jframe), true ); 
      return dissimilarities(iframe,jframe);
   }
   return 0.0;
diff --git a/src/analysis/LandmarkSelectionBase.h b/src/analysis/LandmarkSelectionBase.h
index 5a91ffe6f8d839c7be60e21e7f96684827aebb31..09d56554559db50f199d2da098adc0d08ec6fce6 100644
--- a/src/analysis/LandmarkSelectionBase.h
+++ b/src/analysis/LandmarkSelectionBase.h
@@ -54,7 +54,7 @@ public:
 /// Get the ith data point
   void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ;
 /// Get a reference configuration
-  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, bool& isprojection );
+  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat );
 /// Select landmark configurations
   void performAnalysis();
   virtual void selectLandmarks()=0;
@@ -85,8 +85,8 @@ void LandmarkSelectionBase::getDataPoint( const unsigned& idata, std::vector<dou
 }
 
 inline
-ReferenceConfiguration* LandmarkSelectionBase::getReferenceConfiguration( const unsigned& idat, bool& isprojection ){
-  return AnalysisWithDataCollection::getReferenceConfiguration( landmark_indices[idat], isprojection );
+ReferenceConfiguration* LandmarkSelectionBase::getReferenceConfiguration( const unsigned& idat ){
+  return AnalysisWithDataCollection::getReferenceConfiguration( landmark_indices[idat] );
 }
 
 inline
diff --git a/src/analysis/OutputColvarFile.cpp b/src/analysis/OutputColvarFile.cpp
index df589e265c6860421a66c3aa5818379c5907120a..fe56fc3d0b20934ec52e2194a8d4273ff113a365 100644
--- a/src/analysis/OutputColvarFile.cpp
+++ b/src/analysis/OutputColvarFile.cpp
@@ -88,17 +88,21 @@ void OutputColvarFile::performAnalysis(){
   gfile.fmtField(fmt+" ");
   gfile.open( filename.c_str() );
 
-  // Can't print out all landmark data if we have reference atom positions
-  bool ignore;
-  ReferenceAtoms* myat=dynamic_cast<ReferenceAtoms*>( getReferenceConfiguration(0,ignore) );
-  plumed_assert( !myat );
-  
+  ReferenceConfiguration* myp = getReferenceConfiguration(0);
+  if( myp->getNumberOfProperties()==0 ) plumed_assert( !dynamic_cast<ReferenceAtoms*>( myp ) );
+
   // Print embedding coordinates
   for(unsigned i=0;i<getNumberOfDataPoints();++i){
-      ReferenceArguments* myref=dynamic_cast<ReferenceArguments*>( getReferenceConfiguration(i,ignore) );
-      plumed_assert( myref );
-      for(unsigned j=0;j<myref->getReferenceArguments().size();++j){
-          gfile.printField( myref->getArgumentNames()[j], myref->getReferenceArgument(j) );
+      ReferenceConfiguration* mypoint=getReferenceConfiguration(i);
+      for(unsigned j=0;j<mypoint->getNumberOfProperties();++j){
+          gfile.printField( mypoint->getPropertyName(j), mypoint->getPropertyValue(j) );
+      }
+      if( mypoint->getNumberOfProperties()==0 ){
+          ReferenceArguments* myref=dynamic_cast<ReferenceArguments*>( mypoint );
+          plumed_assert( myref );
+          for(unsigned j=0;j<myref->getReferenceArguments().size();++j){
+              gfile.printField( myref->getArgumentNames()[j], myref->getReferenceArgument(j) );
+          }
       }
       gfile.printField();
   }  
diff --git a/src/analysis/OutputPDBFile.cpp b/src/analysis/OutputPDBFile.cpp
index 6112115e16f11d5f54af7e603d253383683d22b3..ae0fa1db6793b72013851a0b3249f737e03357dd 100644
--- a/src/analysis/OutputPDBFile.cpp
+++ b/src/analysis/OutputPDBFile.cpp
@@ -77,18 +77,12 @@ fmt("%f")
 void OutputPDBFile::performAnalysis(){
   // Output the embedding in plumed pdb format
   OFile afile; afile.link(*this); afile.setBackupString("analysis"); std::size_t psign=fmt.find("%");
-  afile.open( filename.c_str() ); bool isprojection; std::string descr="REMARK WEIGHT=%-" + fmt.substr(psign+1) + "\n";
+  afile.open( filename.c_str() ); std::string descr="REMARK WEIGHT=%-" + fmt.substr(psign+1) + "\n";
   for(unsigned j=0;j<getNumberOfDataPoints();++j){
       afile.printf("DESCRIPTION: analysis data from calculation done at time %f \n",getLabel().c_str(),getTime() );
       afile.printf(descr.c_str(),getWeight(j) ); 
-      ReferenceConfiguration* myref = getReferenceConfiguration(j,isprojection);
-      if( plumed.getAtoms().usingNaturalUnits() ) myref->print( 1.0, afile, fmt, isprojection );
-      else myref->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt, isprojection );
-      // This ensures the high dimensional position is projected if we are working with dimensionality reduction 
-      if( isprojection ){ 
-          if( plumed.getAtoms().usingNaturalUnits() ) getInputReferenceConfiguration(j)->print( 1.0, afile, fmt, false );
-          else getInputReferenceConfiguration(j)->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt, false );
-      }
+      if( plumed.getAtoms().usingNaturalUnits() ) getReferenceConfiguration(j)->print( 1.0, afile, fmt );
+      else getReferenceConfiguration(j)->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt );
   }
   afile.close();
 }
diff --git a/src/analysis/ReadDissimilarityMatrix.cpp b/src/analysis/ReadDissimilarityMatrix.cpp
index 03df61abb5905804a54926028568ef06309d7b37..7dec6c1ddd1171dcadd447d32f52569fd9c6a0e2 100644
--- a/src/analysis/ReadDissimilarityMatrix.cpp
+++ b/src/analysis/ReadDissimilarityMatrix.cpp
@@ -48,7 +48,7 @@ public:
   ReadDissimilarityMatrix( const ActionOptions& ao );
   unsigned getNumberOfDataPoints() const { return nnodes; }
 /// This gives an error as if we read in the matrix we dont have the coordinates
-  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection );
+  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata );
   ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata );
 /// This gives an error as if we read in the matrix we dont have the coordinates
   void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ;
@@ -124,7 +124,7 @@ double ReadDissimilarityMatrix::getDissimilarity( const unsigned& iframe, const
   return dissimilarities( iframe, jframe );
 }
 
-ReferenceConfiguration* ReadDissimilarityMatrix::getReferenceConfiguration( const unsigned& idata, bool& isprojection ){
+ReferenceConfiguration* ReadDissimilarityMatrix::getReferenceConfiguration( const unsigned& idata ){
   plumed_merror("cannot get reference configurations from read in dissimilarity matrix");
   return NULL;
 }
diff --git a/src/dimred/DimensionalityReductionBase.cpp b/src/dimred/DimensionalityReductionBase.cpp
index 505bbe4bb8ebdb37118803e1aa4b422527461580..364695734a7cebf3ec5f5d4e6fb38b6b7307b7fe 100644
--- a/src/dimred/DimensionalityReductionBase.cpp
+++ b/src/dimred/DimensionalityReductionBase.cpp
@@ -21,7 +21,6 @@
 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
 #include "DimensionalityReductionBase.h"
 #include "reference/ReferenceConfiguration.h"
-#include "reference/MetricRegister.h"
 #include "core/PlumedMain.h"
 #include "core/Atoms.h"
 
@@ -36,7 +35,6 @@ void DimensionalityReductionBase::registerKeywords( Keywords& keys ){
 DimensionalityReductionBase::DimensionalityReductionBase( const ActionOptions& ao ):
 Action(ao),
 analysis::AnalysisBase(ao),
-myref(NULL),
 dimredbase(NULL)
 {
   // Check that some dissimilarity information is available
@@ -52,23 +50,12 @@ dimredbase(NULL)
       if( nlow<1 ) error("dimensionality of low dimensional space must be at least one");
   }
   log.printf("  projecting in %d dimensional space \n",nlow);
-
-  ReferenceConfigurationOptions("EUCLIDEAN");
-  myref=metricRegister().create<ReferenceConfiguration>("EUCLIDEAN");
-  std::vector<std::string> dimnames(nlow); std::string num;
-  for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); dimnames[i] = getLabel() + "." + num; }
-  myref->setNamesAndAtomNumbers( std::vector<AtomNumber>(), dimnames );
-}
-
-DimensionalityReductionBase::~DimensionalityReductionBase(){
-  delete myref;
 }
 
-ReferenceConfiguration* DimensionalityReductionBase::getReferenceConfiguration( const unsigned& idat, bool& isprojection ){
-  std::vector<double> pp(nlow); for(unsigned i=0;i<nlow;++i) pp[i]=projections(idat,i);
-  std::vector<double> empty( pp.size() ); isprojection=true;
-  myref->setReferenceConfig( std::vector<Vector>(), pp, empty );
-  return myref;
+ReferenceConfiguration* DimensionalityReductionBase::getReferenceConfiguration( const unsigned& idat ){
+  ReferenceConfiguration* myref = mydata->getInputReferenceConfiguration( idat ); std::string num; myref->clearAllProperties();
+  for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); myref->attachProperty( getLabel() + "." + num, projections(idat,i) ); }
+  return myref; 
 }
 
 ReferenceConfiguration* DimensionalityReductionBase::getInputReferenceConfiguration( const unsigned& idat ){
diff --git a/src/dimred/DimensionalityReductionBase.h b/src/dimred/DimensionalityReductionBase.h
index 66725aa8036123d3b9ac5cd5d73f8b0a928ebcb7..e06be9d81980fd5259983f8106bb5692c1a4bb85 100644
--- a/src/dimred/DimensionalityReductionBase.h
+++ b/src/dimred/DimensionalityReductionBase.h
@@ -34,9 +34,6 @@ private:
 /// This are the target distances for a single point. 
 /// This is used when we do out of sample or pointwise global optimization
   std::vector<double> dtargets;
-/// We create a reference configuration here so that we can pass projection data
-/// quickly
-  ReferenceConfiguration* myref;
 /// The projections that were generated by the dimensionality reduction algorithm
   Matrix<double> projections;
 protected:
@@ -47,11 +44,10 @@ protected:
 public:
   static void registerKeywords( Keywords& keys );
   DimensionalityReductionBase( const ActionOptions& );
-  ~DimensionalityReductionBase();
 /// Get the ith data point (this returns the projection)
   void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ;
 /// Get a reference configuration (this returns the projection)
-  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection ); 
+  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); 
   ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata );
 /// Actually perform the analysis
   void performAnalysis();
diff --git a/src/dimred/ProjectNonLandmarkPoints.cpp b/src/dimred/ProjectNonLandmarkPoints.cpp
index a606ffb315722dab216a8edf5254120f631bb32d..0dc28f101bbca8c99dcd5045108fdb2c9e898381 100644
--- a/src/dimred/ProjectNonLandmarkPoints.cpp
+++ b/src/dimred/ProjectNonLandmarkPoints.cpp
@@ -23,9 +23,9 @@
 #include "core/PlumedMain.h"
 #include "core/ActionSet.h"
 #include "tools/Random.h"
-#include "reference/MetricRegister.h"
 #include "tools/ConjugateGradient.h"
 #include "analysis/AnalysisBase.h"
+#include "reference/ReferenceConfiguration.h"
 #include "DimensionalityReductionBase.h"
 
 //+PLUMEDOC DIMRED PROJECT_ALL_ANALYSIS_DATA
@@ -46,22 +46,18 @@ private:
   double cgtol;
 /// Number of diemsions in low dimensional space
   unsigned nlow;
-/// We create a reference configuration here so that we can pass projection data
-/// quickly
-  ReferenceConfiguration* myref; 
 /// The class that calcualtes the projection of the data that is required
   DimensionalityReductionBase* mybase;
 /// Generate a projection of the ith data point - this is called in two routine
-  void generateProjection( const unsigned& idata, std::vector<double>& point );
+  void generateProjection( const unsigned& idat, std::vector<double>& point );
 public:
   static void registerKeywords( Keywords& keys );
   ProjectNonLandmarkPoints( const ActionOptions& ao );
-  ~ProjectNonLandmarkPoints();
 /// Get the ith data point (this returns the projection)
-  void getDataPoint( const unsigned& idata, std::vector<double>& point );
+  void getDataPoint( const unsigned& idat, std::vector<double>& point );
 /// Get a reference configuration (this returns the projection)
-  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection );
-  ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata );
+  ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat );
+  ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idat );
 /// This does nothing -- projections are calculated when getDataPoint and getReferenceConfiguration are called
   void performAnalysis(){}
 /// This just calls calculate stress in the underlying projection object
@@ -92,24 +88,14 @@ mybase(NULL)
 
   log.printf("  generating out-of-sample projections using projection with label %s \n",myproj.c_str() );
   parse("CGTOL",cgtol);
-
-  ReferenceConfigurationOptions("EUCLIDEAN");
-  myref=metricRegister().create<ReferenceConfiguration>("EUCLIDEAN");
-  std::vector<std::string> dimnames(nlow); std::string num;
-  for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); dimnames[i] = getLabel() + "." + num; }
-  myref->setNamesAndAtomNumbers( std::vector<AtomNumber>(), dimnames );
-}
-
-ProjectNonLandmarkPoints::~ProjectNonLandmarkPoints(){
-  delete myref;
 }
 
-void ProjectNonLandmarkPoints::generateProjection( const unsigned& idata, std::vector<double>& point ){
+void ProjectNonLandmarkPoints::generateProjection( const unsigned& idat, std::vector<double>& point ){
   ConjugateGradient<ProjectNonLandmarkPoints> myminimiser( this );
-  unsigned closest=0; double mindist = sqrt( getDissimilarity( idata, mybase->getDataPointIndexInBase(0) ) );
+  unsigned closest=0; double mindist = sqrt( getDissimilarity( idat, mybase->getDataPointIndexInBase(0) ) );
   mybase->setTargetDistance( 0, mindist );
   for(unsigned i=1;i<mybase->getNumberOfDataPoints();++i){
-      double dist = sqrt( getDissimilarity( idata, mybase->getDataPointIndexInBase(i) ) );
+      double dist = sqrt( getDissimilarity( idat, mybase->getDataPointIndexInBase(i) ) );
       mybase->setTargetDistance( i, dist );
       if( dist<mindist ){ mindist=dist; closest=i; }
   }
@@ -119,19 +105,20 @@ void ProjectNonLandmarkPoints::generateProjection( const unsigned& idata, std::v
   myminimiser.minimise( cgtol, point, &ProjectNonLandmarkPoints::calculateStress );
 }
 
-ReferenceConfiguration* ProjectNonLandmarkPoints::getReferenceConfiguration( const unsigned& idata, bool& isprojection ){
-  std::vector<double> pp(nlow); std::vector<double> empty( pp.size() ); generateProjection( idata, pp );
-  myref->setReferenceConfig( std::vector<Vector>(), pp, empty ); isprojection=true;
+ReferenceConfiguration* ProjectNonLandmarkPoints::getReferenceConfiguration( const unsigned& idat ){
+  std::vector<double> pp(nlow); generateProjection( idat, pp ); std::string num;
+  ReferenceConfiguration* myref = mydata->getInputReferenceConfiguration( idat ); myref->clearAllProperties();
+  for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); myref->attachProperty( getLabel() + "." + num, pp[i] ); }
   return myref;
 }
 
-ReferenceConfiguration* ProjectNonLandmarkPoints::getInputReferenceConfiguration( const unsigned& idata ){
-  return mydata->getInputReferenceConfiguration( idata );
+ReferenceConfiguration* ProjectNonLandmarkPoints::getInputReferenceConfiguration( const unsigned& idat ){
+  return mydata->getInputReferenceConfiguration( idat );
 }
 
-void ProjectNonLandmarkPoints::getDataPoint( const unsigned& idata, std::vector<double>& point ){
+void ProjectNonLandmarkPoints::getDataPoint( const unsigned& idat, std::vector<double>& point ){
   if( point.size()!=nlow ) point.resize( nlow );
-  generateProjection( idata, point );
+  generateProjection( idat, point );
 }
 
 double ProjectNonLandmarkPoints::calculateStress( const std::vector<double>& pp, std::vector<double>& der ){
diff --git a/src/mapping/Mapping.cpp b/src/mapping/Mapping.cpp
index b3ba5d58df84d0c3e2fbeb8bd68498bf17a2a3a6..2a8fcaed3cac5c4c68d41871048e2f9eb59beb99 100644
--- a/src/mapping/Mapping.cpp
+++ b/src/mapping/Mapping.cpp
@@ -106,9 +106,9 @@ ActionWithVessel(ao)
   requestAtoms( atoms ); std::vector<Value*> req_args;
   interpretArgumentList( args, req_args ); requestArguments( req_args );
   // Duplicate all frames (duplicates are used by sketch-map)
-  mymap->duplicateFrameList(); 
+  // mymap->duplicateFrameList(); 
   // fframes.resize( 2*nfram, 0.0 ); dfframes.resize( 2*nfram, 0.0 );
-  plumed_assert( !mymap->mappingNeedsSetup() );
+  // plumed_assert( !mymap->mappingNeedsSetup() );
   // Resize all derivative arrays
   // mymap->setNumberOfAtomsAndArguments( atoms.size(), args.size() );
   // Resize forces array
@@ -128,25 +128,25 @@ Mapping::~Mapping(){
   delete mymap;
 }
 
-void Mapping::prepare(){
-  if( mymap->mappingNeedsSetup() ){
-      // Get the arguments and atoms that are required
-      std::vector<AtomNumber> atoms; std::vector<std::string> args;
-      mymap->getAtomAndArgumentRequirements( atoms, args );
-      requestAtoms( atoms ); std::vector<Value*> req_args; 
-      interpretArgumentList( args, req_args ); requestArguments( req_args );
-      // Duplicate all frames (duplicates are used by sketch-map)
-      mymap->duplicateFrameList();
-      // Get the number of frames in the path
-      unsigned nfram=getNumberOfReferencePoints();
-      // fframes.resize( 2*nfram, 0.0 ); dfframes.resize( 2*nfram, 0.0 ); 
-      plumed_assert( !mymap->mappingNeedsSetup() );
-      // Resize all derivative arrays
-      // mymap->setNumberOfAtomsAndArguments( atoms.size(), args.size() );
-      // Resize forces array
-      forcesToApply.resize( 3*getNumberOfAtoms() + 9 + getNumberOfArguments() );
-  }
-}
+// void Mapping::prepare(){
+//   if( mymap->mappingNeedsSetup() ){
+//       // Get the arguments and atoms that are required
+//       std::vector<AtomNumber> atoms; std::vector<std::string> args;
+//       mymap->getAtomAndArgumentRequirements( atoms, args );
+//       requestAtoms( atoms ); std::vector<Value*> req_args; 
+//       interpretArgumentList( args, req_args ); requestArguments( req_args );
+//       // Duplicate all frames (duplicates are used by sketch-map)
+//       // mymap->duplicateFrameList();
+//       // Get the number of frames in the path
+//       unsigned nfram=getNumberOfReferencePoints();
+//       // fframes.resize( 2*nfram, 0.0 ); dfframes.resize( 2*nfram, 0.0 ); 
+//       plumed_assert( !mymap->mappingNeedsSetup() );
+//       // Resize all derivative arrays
+//       // mymap->setNumberOfAtomsAndArguments( atoms.size(), args.size() );
+//       // Resize forces array
+//       forcesToApply.resize( 3*getNumberOfAtoms() + 9 + getNumberOfArguments() );
+//   }
+// }
 
 unsigned Mapping::getPropertyIndex( const std::string& name ) const {
   return mymap->getPropertyIndex( name );
diff --git a/src/mapping/Mapping.h b/src/mapping/Mapping.h
index 855f91576493e33c257dc8eb3b67b2d9d335b5b3..4fb4ea05631cebd7744f5796675a17344a1d8833 100644
--- a/src/mapping/Mapping.h
+++ b/src/mapping/Mapping.h
@@ -91,7 +91,7 @@ public:
 /// Get the value of the ith property for the current frame
   double getPropertyValue( const unsigned& current, const unsigned& iprop ) const ;
 /// Stuff to do before we do the calculation
-  void prepare();
+//   void prepare();
 /// Apply the forces 
   void apply();
 };
diff --git a/src/mapping/PCAVars.cpp b/src/mapping/PCAVars.cpp
index aaf1ad0d183b6047fcbbd45b4a2721749885ca4c..928b1fbf63619c3f373f7a283ce4814a8cd28db0 100644
--- a/src/mapping/PCAVars.cpp
+++ b/src/mapping/PCAVars.cpp
@@ -274,8 +274,6 @@ mypack(0,0,myvals)
   /// This sets up all the storage data required by PCA in the pack
   myframes.getFrame(0)->setupPCAStorage( mypack );
 
-  // Retrieve the position of the first frame, as we use this for alignment
-  myref->setNamesAndAtomNumbers( atoms, args );
   // Check there are no periodic arguments
   for(unsigned i=0;i<getNumberOfArguments();++i){
       if( getPntrToArgument(i)->isPeriodic() ) error("cannot use periodic variables in pca projections");
diff --git a/src/reference/MultiDomainRMSD.cpp b/src/reference/MultiDomainRMSD.cpp
index c87317502ea3e1365489ea21f9a42a09915683d6..b9e1eca5b911ab57e05df2740a2bbaaa674cfd28 100644
--- a/src/reference/MultiDomainRMSD.cpp
+++ b/src/reference/MultiDomainRMSD.cpp
@@ -79,7 +79,8 @@ void MultiDomainRMSD::read( const PDB& pdb ){
        else weights.push_back( ww );
    }   
    // And set the atom numbers for this object
-   setAtomNumbers( pdb.getAtomNumbers() );
+   for(unsigned i=0;i<pdb.size();++i){ indices.push_back( pdb.getAtomNumbers()[i] ); der_index.push_back(i); }
+   // setAtomNumbers( pdb.getAtomNumbers() );
 }
 
 void MultiDomainRMSD::setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in ){
diff --git a/src/reference/MultiReferenceBase.cpp b/src/reference/MultiReferenceBase.cpp
index fcfdd2337ccee5e687be1c70190e3cd3d0f35940..cd2ed45d0724d5483250281488bb7e3e8465b9b7 100644
--- a/src/reference/MultiReferenceBase.cpp
+++ b/src/reference/MultiReferenceBase.cpp
@@ -70,20 +70,20 @@ void MultiReferenceBase::getAtomAndArgumentRequirements( std::vector<AtomNumber>
 //   }
 // }
 
-void MultiReferenceBase::copyFrame( ReferenceConfiguration* frameToCopy ){
-  // Create a reference configuration of the appropriate type
-  ReferenceConfiguration* mymsd=metricRegister().create<ReferenceConfiguration>( frameToCopy->getName() );
-  // Copy names of arguments and and indexes
-  mymsd->setNamesAndAtomNumbers( frameToCopy->getAbsoluteIndexes(), frameToCopy->getArgumentNames() );
-  // Copy reference positions, reference arguments and reference metric
-  mymsd->setReferenceConfig( frameToCopy->getReferencePositions(), frameToCopy->getReferenceArguments(), frameToCopy->getReferenceMetric() );
-  // Copy weight
-  mymsd->setWeight( frameToCopy->getWeight() );
-  // Easy bit - copy the frame
-  frames.push_back( mymsd ); 
-  // This resizes the low dim array
-  resizeRestOfFrame();
-}
+// void MultiReferenceBase::copyFrame( ReferenceConfiguration* frameToCopy ){
+//   // Create a reference configuration of the appropriate type
+//   ReferenceConfiguration* mymsd=metricRegister().create<ReferenceConfiguration>( frameToCopy->getName() );
+//   // Copy names of arguments and and indexes
+//   mymsd->setNamesAndAtomNumbers( frameToCopy->getAbsoluteIndexes(), frameToCopy->getArgumentNames() );
+//   // Copy reference positions, reference arguments and reference metric
+//   mymsd->setReferenceConfig( frameToCopy->getReferencePositions(), frameToCopy->getReferenceArguments(), frameToCopy->getReferenceMetric() );
+//   // Copy weight
+//   mymsd->setWeight( frameToCopy->getWeight() );
+//   // Easy bit - copy the frame
+//   frames.push_back( mymsd ); 
+//   // This resizes the low dim array
+//   resizeRestOfFrame();
+// }
 
 void MultiReferenceBase::setWeights( const std::vector<double>& weights ){
    plumed_assert( weights.size()==frames.size() );
diff --git a/src/reference/MultiReferenceBase.h b/src/reference/MultiReferenceBase.h
index fddb71530216985fe3edd9fa885ba7b20236f827..0d2827133893b835e0dbd84f2b9f9b686e49ed41 100644
--- a/src/reference/MultiReferenceBase.h
+++ b/src/reference/MultiReferenceBase.h
@@ -66,7 +66,7 @@ public:
 /// Return the ith reference frame
   ReferenceConfiguration* getFrame( const unsigned& iframe );
 /// Copy a reference configuration into the multi reference object
-  void copyFrame( ReferenceConfiguration* frameToCopy ); 
+//  void copyFrame( ReferenceConfiguration* frameToCopy ); 
 /// Set the weight of the ith frame
   void setWeights( const std::vector<double>& ww );
 /// Retrieve the weight of one of the frames
diff --git a/src/reference/ReferenceArguments.cpp b/src/reference/ReferenceArguments.cpp
index 50cb4578693659905651505893b8dfe13802b285..a9bc45727a7841206a2e6e4382335c62826f37bd 100644
--- a/src/reference/ReferenceArguments.cpp
+++ b/src/reference/ReferenceArguments.cpp
@@ -38,8 +38,8 @@ void ReferenceArguments::readArgumentsFromPDB( const PDB& pdb ){
   if( !aref ) parseVector( "ARG", arg_names );
   else parseVector( "ARG", arg_names, true );
 
-  reference_args.resize( arg_names.size() );
-  for(unsigned i=0;i<arg_names.size();++i) parse( arg_names[i], reference_args[i] );
+  reference_args.resize( arg_names.size() ); der_index.resize( arg_names.size() );
+  for(unsigned i=0;i<arg_names.size();++i){ parse( arg_names[i], reference_args[i] ); der_index[i]=i; }
 
   if( hasweights ){
       plumed_massert( !hasmetric, "should not have weights if we are using metric");
@@ -62,17 +62,6 @@ void ReferenceArguments::readArgumentsFromPDB( const PDB& pdb ){
   }
 }
 
-void ReferenceArguments::setArgumentNames( const std::vector<std::string>& arg_vals ){
-  reference_args.resize( arg_vals.size() ); 
-  arg_names.resize( arg_vals.size() ); 
-  der_index.resize( arg_vals.size() );
-  for(unsigned i=0;i<arg_vals.size();++i){
-     arg_names[i]=arg_vals[i]; der_index[i]=i; 
-  }
-  if( hasmetric ) metric.resize( arg_vals.size(), arg_vals.size() );
-  else weights.resize( arg_vals.size() );
-}
-
 void ReferenceArguments::setReferenceArguments( const std::vector<double>& arg_vals, const std::vector<double>& sigma ){
   plumed_dbg_assert( reference_args.size()==arg_vals.size() );
   for(unsigned i=0;i<arg_vals.size();++i) reference_args[i]=arg_vals[i];
@@ -120,9 +109,8 @@ void ReferenceArguments::getArgumentRequests( std::vector<std::string>& argout,
   }
 }
 
-void ReferenceArguments::printArguments( OFile& ofile, const std::string& fmt, const bool& isproperty ) const {
-  if( isproperty ) ofile.printf("REMARK PROPERTIES=%s", arg_names[0].c_str() );
-  else ofile.printf("REMARK ARG=%s", arg_names[0].c_str() );
+void ReferenceArguments::printArguments( OFile& ofile, const std::string& fmt ) const {
+  ofile.printf("REMARK ARG=%s", arg_names[0].c_str() );
   for(unsigned i=1;i<arg_names.size();++i) ofile.printf(",%s", arg_names[i].c_str() );
   ofile.printf("\n");
   ofile.printf("REMARK ");
diff --git a/src/reference/ReferenceArguments.h b/src/reference/ReferenceArguments.h
index d1fc4db14e51c1ca2d2fb9512385b91896342f03..0663aa44bea1cd355ffcf50a754cf5915fc70290 100644
--- a/src/reference/ReferenceArguments.h
+++ b/src/reference/ReferenceArguments.h
@@ -73,14 +73,12 @@ public:
   unsigned getNumberOfReferenceArguments() const ;
 /// Get the arguments required 
   void getArgumentRequests( std::vector<std::string>&, bool disable_checks=false );
-/// Set the names of the arguments
-  void setArgumentNames( const std::vector<std::string>& arg_vals );
 /// Set the positions of the refernce arguments
   void setReferenceArguments( const std::vector<double>& arg_vals, const std::vector<double>& sigma );
 /// Get the value of the ith reference argument
   double getReferenceArgument( const unsigned& i ) const ;
 /// Print the arguments out
-  void printArguments( OFile& ofile, const std::string& fmt, const bool& isproperty ) const ;
+  void printArguments( OFile& ofile, const std::string& fmt ) const ;
 /// Return all the reference arguments
   const std::vector<double>& getReferenceArguments();
   const std::vector<double>& getReferenceMetric();
diff --git a/src/reference/ReferenceAtoms.cpp b/src/reference/ReferenceAtoms.cpp
index c28dc682e8f07b6cdb25c1a9e18bdc50068761cf..b97f2d4cb4c07b3d8e3435dd2b8756035f0136e4 100644
--- a/src/reference/ReferenceAtoms.cpp
+++ b/src/reference/ReferenceAtoms.cpp
@@ -36,17 +36,7 @@ void ReferenceAtoms::readAtomsFromPDB( const PDB& pdb ){
 
   for(unsigned i=0;i<pdb.size();++i){
      indices.push_back( pdb.getAtomNumbers()[i] ); reference_atoms.push_back( pdb.getPositions()[i] );
-     align.push_back( pdb.getOccupancy()[i] ); displace.push_back( pdb.getBeta()[i] );
-  }
-  der_index.resize( reference_atoms.size() );
-}
-
-void ReferenceAtoms::setAtomNumbers( const std::vector<AtomNumber>& numbers ){
-  reference_atoms.resize( numbers.size() ); align.resize( numbers.size() );
-  displace.resize( numbers.size() ); der_index.resize( numbers.size() );
-  indices.resize( numbers.size() );
-  for(unsigned i=0;i<numbers.size();++i){
-     indices[i]=numbers[i]; der_index[i]=i; 
+     align.push_back( pdb.getOccupancy()[i] ); displace.push_back( pdb.getBeta()[i] ); der_index.push_back(i);
   }
 }
 
diff --git a/src/reference/ReferenceAtoms.h b/src/reference/ReferenceAtoms.h
index 5e7e0c12e79cef387520c281df99d9c228f678dc..6fc17ced1443c70f57d3b9c5c8315be8488819d3 100644
--- a/src/reference/ReferenceAtoms.h
+++ b/src/reference/ReferenceAtoms.h
@@ -45,6 +45,7 @@ class ReferenceAtoms :
   virtual public ReferenceConfiguration
 {
 friend class SingleDomainRMSD;
+friend class MultiDomainRMSD;
 private:
 /// This flag tells us if the user has disabled checking of the input in order to
 /// do fancy paths with weird inputs
@@ -64,8 +65,6 @@ private:
 protected:
 /// Read in the atoms from the pdb file
   void readAtomsFromPDB( const PDB& );
-/// Add atom indices to list
-  void setAtomIndices( const std::vector<AtomNumber>& atomnumbers );
 /// Read a list of atoms from the pdb input file
   bool parseAtomList( const std::string& , std::vector<unsigned>& );
 /// Get the vector of alignment weights
@@ -76,12 +75,6 @@ protected:
   Vector getReferencePosition( const unsigned& iatom ) const ;  
 /// Get the reference positions
   const std::vector<Vector> & getReferencePositions() const ; 
-/// Add derivatives to iatom th atom in list
-//  void addAtomicDerivatives( const unsigned& , const Vector& );
-/// Get the atomic derivatives on the ith atom in the list
-//  Vector retrieveAtomicDerivatives( const unsigned& ) const ;
-/// Add derivatives to the viral
-//  void addBoxDerivatives( const Tensor& );
 /// This does the checks that are always required
   void singleDomainRequests( std::vector<AtomNumber>&, bool disable_checks );
 public:
@@ -92,8 +85,6 @@ public:
   unsigned getAtomIndex( const unsigned& ) const ;
 /// Get the atoms required (additional checks are required when we have multiple domains)
   virtual void getAtomRequests( std::vector<AtomNumber>&, bool disable_checks=false );
-/// Set the indices of the reference atoms
-  void setAtomNumbers( const std::vector<AtomNumber>& numbers );
 /// Set the positions of the reference atoms
   virtual void setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in )=0;
 /// Print the atomic positions
@@ -116,13 +107,12 @@ const std::vector<double> & ReferenceAtoms::getDisplace() const {
 
 inline
 unsigned ReferenceAtoms::getNumberOfReferencePositions() const {
-  plumed_dbg_assert( der_index.size()==reference_atoms.size() );
-  return reference_atoms.size();
+  return der_index.size(); // reference_atoms.size();
 }
 
 inline
 unsigned ReferenceAtoms::getNumberOfAtoms() const {
-  return reference_atoms.size();
+  return der_index.size(); // reference_atoms.size();
 }
 
 inline
@@ -143,21 +133,6 @@ const std::vector<Vector> & ReferenceAtoms::getReferencePositions() const {
   return reference_atoms;
 }
 
-// inline
-// void ReferenceAtoms::addAtomicDerivatives( const unsigned& iatom, const Vector& der ){
-//   atom_ders[ getAtomIndex(iatom) ]+=der;
-// }
-
-// inline
-// Vector ReferenceAtoms::retrieveAtomicDerivatives( const unsigned& iatom ) const {
-//   return atom_ders[ getAtomIndex(iatom) ];
-// }
-
-// inline
-// void ReferenceAtoms::addBoxDerivatives( const Tensor& vir ){
-//   virialWasSet=true; virial+=vir;
-// }
-
 inline
 const std::vector<AtomNumber>& ReferenceAtoms::getAbsoluteIndexes(){
   return indices;
diff --git a/src/reference/ReferenceConfiguration.cpp b/src/reference/ReferenceConfiguration.cpp
index b20e9b9bc37c04e4649bfeb34c204a9e11124228..8e094999578c2781fe1d640502371084ec4ac366 100644
--- a/src/reference/ReferenceConfiguration.cpp
+++ b/src/reference/ReferenceConfiguration.cpp
@@ -45,8 +45,6 @@ std::string ReferenceConfigurationOptions::getMultiRMSDType() const {
 
 ReferenceConfiguration::ReferenceConfiguration( const ReferenceConfigurationOptions& ro ):
 name(ro.tt)
-// arg_ders(0),
-// atom_ders(0)
 {
   weight=0.0;
 }
@@ -66,22 +64,14 @@ void ReferenceConfiguration::set( const PDB& pdb ){
       if(ignore!=name) error("mismatch for name");
   }
   if( !parse("WEIGHT",weight,true) ) weight=1.0;
+  // Read in properties
+  parseVector( "PROPERTIES", property_names, true );
+  property_values.resize( property_names.size() );
+  for(unsigned i=0;i<property_names.size();++i) parse( property_names[i], property_values[i] );
+  // And read in rest of pdb
   read( pdb );
 }
 
-// void ReferenceConfiguration::setNumberOfArguments( const unsigned& n ){
-//   arg_ders.resize(n); tmparg.resize(n);
-// }
-
-// void ReferenceConfiguration::setNumberOfAtoms( const unsigned& n ){
-//   atom_ders.resize(n);
-// }
-
-// bool ReferenceConfiguration::getVirial( Tensor& virout ) const {
-//   if(virialWasSet) virout=virial;
-//   return virialWasSet;
-// }
-
 void ReferenceConfiguration::parseFlag( const std::string&key, bool&t ){
   Tools::parseFlag(line,key,t);
 }
@@ -90,45 +80,6 @@ void ReferenceConfiguration::error(const std::string& msg){
   plumed_merror("error reading reference configuration of type " + name + " : " + msg );
 }
 
-void ReferenceConfiguration::setNamesAndAtomNumbers( const std::vector<AtomNumber>& numbers, const std::vector<std::string>& arg ){
-   ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>( this );
-  if(!atoms){
-     plumed_massert( numbers.size()==0, "expecting no atomic positions");
-     //setNumberOfAtoms( 0 );
-  } else { 
-     atoms->setAtomNumbers( numbers );
-     // setNumberOfAtoms( numbers.size() );
-  }
-  // Copy the arguments to the reference
-  ReferenceArguments* args=dynamic_cast<ReferenceArguments*>( this );
-  if(!args){
-     plumed_massert( arg.size()==0, "expecting no arguments");
-     // setNumberOfArguments(0);
-  } else {
-     args->setArgumentNames( arg );
-     // setNumberOfArguments( arg.size() );
-  }
-}
-
-void ReferenceConfiguration::setReferenceConfig( const std::vector<Vector>& pos, const std::vector<double>& arg, const std::vector<double>& metric ){
-//  plumed_dbg_assert( pos.size()==atom_ders.size() && arg.size()==arg_ders.size() );
-  // Copy the atomic positions to the reference
-  ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>( this );
-  if(!atoms){
-     plumed_massert( pos.size()==0, "expecting no atomic positions");
-  } else { 
-     std::vector<double> align_in( pos.size(), 1.0 ), displace_in( pos.size(), 1.0 );
-     atoms->setReferenceAtoms( pos, align_in, displace_in );
-  }
-  // Copy the arguments to the reference
-  ReferenceArguments* args=dynamic_cast<ReferenceArguments*>( this );
-  if(!args){
-     plumed_massert( arg.size()==0 && metric.size()==0, "expecting no arguments");
-  } else {
-     args->setReferenceArguments( arg, metric );
-  }
-}
-
 void ReferenceConfiguration::checkRead(){
   if(!line.empty()){
     std::string msg="cannot understand the following words from the input line : ";
@@ -143,31 +94,50 @@ bool ReferenceConfiguration::isDirection() const {
 
 double ReferenceConfiguration::calculate( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, 
                                           ReferenceValuePack& myder, const bool& squared ) const {
-  // clearDerivatives();
   std::vector<double> tmparg( vals.size() );
   for(unsigned i=0;i<vals.size();++i) tmparg[i]=vals[i]->get();
   return calc( pos, pbc, vals, tmparg, myder, squared );
 }
 
-// void ReferenceConfiguration::copyDerivatives( const ReferenceConfiguration* ref ){
-//   plumed_dbg_assert( ref->atom_ders.size()==atom_ders.size() && ref->arg_ders.size()==arg_ders.size() );
-//   for(unsigned i=0;i<atom_ders.size();++i) atom_ders[i]=ref->atom_ders[i];
-//   for(unsigned i=0;i<arg_ders.size();++i) arg_ders[i]=ref->arg_ders[i];
-//   virialWasSet=ref->virialWasSet; virial=ref->virial;
-// }
-
 void ReferenceConfiguration::print( const double& lunits, OFile& ofile, const double& time, const double& weight, const double& old_norm ){
   ofile.printf("REMARK TIME=%f LOG_WEIGHT=%f OLD_NORM=%f\n",time, weight, old_norm );
-  print( lunits, ofile, "%f", false );  // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE
+  print( lunits, ofile, "%f" );  // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE
 }
 
-void ReferenceConfiguration::print( const double& lunits, OFile& ofile, const std::string& fmt, const bool& isproperty ){
+void ReferenceConfiguration::print( const double& lunits, OFile& ofile, const std::string& fmt ){
   ReferenceArguments* args=dynamic_cast<ReferenceArguments*>(this);
-  if(args) args->printArguments( ofile, fmt, isproperty );
+  if( property_names.size()>0 ){
+      ofile.printf("REMARK PROPERTIES=%s", property_names[0].c_str() ); 
+      for(unsigned i=1;i<property_names.size();++i) ofile.printf(",%s", property_names[i].c_str() );
+      ofile.printf("\nREMARK "); std::string descr2;
+      if(fmt.find("-")!=std::string::npos){
+         descr2="%s=" + fmt + " ";
+      } else {
+         // This ensures numbers are left justified (i.e. next to the equals sign
+         std::size_t psign=fmt.find("%");
+         plumed_assert( psign!=std::string::npos );
+         descr2="%s=%-" + fmt.substr(psign+1) + " ";
+      }
+      for(unsigned i=0;i<property_names.size();++i) ofile.printf( descr2.c_str(),property_names[i].c_str(), property_values[i] );
+      ofile.printf("\n");
+  }
+  if(args) args->printArguments( ofile, fmt );
   ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>(this);
-  if( atoms && isproperty ) plumed_merror("a set of atoms is not a list of properties");
   if(atoms) atoms->printAtoms( lunits, ofile );
-  if( !isproperty ) ofile.printf("END\n");
+  ofile.printf("END\n");
+}
+
+void ReferenceConfiguration::clearAllProperties(){
+  property_names.resize(0); property_values.resize(0);
+}
+
+void ReferenceConfiguration::attachProperty( const std::string& name, const double& val ){
+  bool found=false;
+  for(unsigned i=0;i<property_names.size();++i){
+      if( property_names[i]==name ){ found=false; property_values[i]=val; break; }
+  }
+  plumed_dbg_assert( property_names.size()==property_values.size() );
+  if( !found ){ property_names.push_back( name ); property_values.push_back( val ); }
 }
 
 double distance( const Pbc& pbc, const std::vector<Value*> & vals, ReferenceConfiguration* ref1, ReferenceConfiguration* ref2, const bool& squared ){
@@ -185,4 +155,5 @@ double distance( const Pbc& pbc, const std::vector<Value*> & vals, ReferenceConf
   return dist1;
 }
 
+
 }
diff --git a/src/reference/ReferenceConfiguration.h b/src/reference/ReferenceConfiguration.h
index a94a010df5c1be7b981e8be2bdf78d68f1848bce..0dd4ce0f9e03b0ecfa3f5e44b0054f59ce29f178 100644
--- a/src/reference/ReferenceConfiguration.h
+++ b/src/reference/ReferenceConfiguration.h
@@ -66,8 +66,6 @@ private:
   double weight;
 /// A vector containing all the remarks from the pdb input
   std::vector<std::string> line;
-/// This is used to store the values of arguments
-//  std::vector<double> tmparg;
 /// These are used to do fake things when we copy frames
   std::vector<AtomNumber> fake_atom_numbers;
   std::vector<std::string> fake_arg_names;
@@ -75,18 +73,12 @@ private:
   std::vector<Vector> fake_refatoms;
   std::vector<double> fake_refargs;
   std::vector<double> fake_metric;
+/// Property values are basically the projections of points
+  std::vector<std::string> property_names;
+  std::vector<double> property_values;
 protected:
-/// Derivatives wrt to the arguments
-//  std::vector<double> arg_ders;
-/// The virial contribution has to be stored 
-//  bool virialWasSet;
-//  Tensor virial;
-/// Derivatives wrt to the atoms
-//  std::vector<Vector> atom_ders;
 /// Crash with an error
   void error(const std::string& msg);
-/// Clear the derivatives 
-//  void clearDerivatives();
 public:
   ReferenceConfiguration( const ReferenceConfigurationOptions& ro );
 /// Destructor
@@ -100,10 +92,6 @@ public:
   virtual void getAtomRequests( std::vector<AtomNumber>&, bool disable_checks=false ){}
 /// Retrieve the arguments that are required for this guy
   virtual void getArgumentRequests( std::vector<std::string>&, bool disable_checks=false ){}
-/// Set the final number of arguments
-//  virtual void setNumberOfArguments( const unsigned& );
-/// Set the final number of atoms
-//  virtual void setNumberOfAtoms( const unsigned& );
 /// Set the reference configuration using a PDB 
   virtual void set( const PDB& );
 /// Do all local business for setting the configuration 
@@ -117,14 +105,6 @@ public:
 /// Calculate the distance from the reference configuration
   virtual double calc( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, const std::vector<double>& args, 
                        ReferenceValuePack& myder, const bool& squared ) const=0;
-// /// Return the derivative wrt to the ith atom
-//   Vector getAtomDerivative( const unsigned& ) const ;
-// /// Return the derivative wrt to the ith argument
-//   double getArgumentDerivative( const unsigned& ) const ;
-/// Return the derivatives of the distance wrt the cell vectors.  This returns false
-/// for everything other than DRMSD as these sort of calculations have to be done 
-/// separately when you use RMSD 
-//   bool getVirial( Tensor& virout ) const ;    
 /// Parse something from the pdb remarks
   template<class T>
   bool parse( const std::string&key, T&t, bool ignore_missing=false );
@@ -137,13 +117,9 @@ public:
   void checkRead();
 /// Copy derivatives from one frame to this frame
   void copyDerivatives( const ReferenceConfiguration* );
-/// Set the atom numbers and the argument names
-  void setNamesAndAtomNumbers( const std::vector<AtomNumber>& numbers, const std::vector<std::string>& arg );
-/// Set the reference structure (perhaps should also pass the pbc and align and displace )
-  void setReferenceConfig( const std::vector<Vector>& pos, const std::vector<double>& arg, const std::vector<double>& metric );
 /// Print a pdb file containing the reference configuration
   void print( const double& lunits, OFile& ofile, const double& time, const double& weight, const double& old_norm );
-  void print( const double& lunits, OFile& ofile, const std::string& fmt, const bool& isproperty );
+  void print( const double& lunits, OFile& ofile, const std::string& fmt );
 /// Get one of the referene arguments
   virtual double getReferenceArgument( const unsigned& i ) const { plumed_error(); return 0.0; }
 /// These are overwritten in ReferenceArguments and ReferenceAtoms but are required here 
@@ -163,20 +139,18 @@ public:
   bool isDirection() const ;
 /// Stuff to setup pca
   virtual void setupPCAStorage( ReferenceValuePack& mypack ){ plumed_error(); }
+/// This clears the set of properties that have been attached to the file
+  void clearAllProperties();
+/// Attach a property to this reference configuration
+  void attachProperty( const std::string& name, const double& val );
+/// Get the number of properties that are stored in this object
+  unsigned getNumberOfProperties() const ;
+/// Get the inum th property value
+  double getPropertyValue( const unsigned& inum ) const ;
+/// Get the name of the inum th property value
+  std::string getPropertyName( const unsigned& inum ) const ;
 };
 
-// inline
-// Vector ReferenceConfiguration::getAtomDerivative( const unsigned& ider ) const {
-//   plumed_dbg_assert( ider<atom_ders.size() );
-//   return atom_ders[ider];
-// }
-
-// inline
-// double ReferenceConfiguration::getArgumentDerivative( const unsigned& ider ) const {
-//   plumed_dbg_assert( ider<arg_ders.size() );
-//   return arg_ders[ider];
-// }
-
 inline
 void ReferenceConfiguration::setWeight( const double& ww ){
   weight=ww;
@@ -236,7 +210,20 @@ unsigned ReferenceConfiguration::getNumberOfReferenceArguments() const {
   return 0;
 }
 
+inline
+unsigned ReferenceConfiguration::getNumberOfProperties() const {
+  return property_values.size();
+}
 
+inline
+double ReferenceConfiguration::getPropertyValue( const unsigned& inum ) const {
+  plumed_dbg_assert( inum<property_values.size() ); return property_values[inum];
+}
+
+inline
+std::string ReferenceConfiguration::getPropertyName( const unsigned& inum ) const {
+  plumed_dbg_assert( inum<property_names.size() ); return property_names[inum];
+}
 
 }
 #endif
diff --git a/src/tools/PDB.cpp b/src/tools/PDB.cpp
index f24146ed8acadeea91d85d9ad335d455c01ba10f..6f75869da49c079daed2c6426bb403578982f5e4 100644
--- a/src/tools/PDB.cpp
+++ b/src/tools/PDB.cpp
@@ -28,6 +28,38 @@ using namespace std;
 
 namespace PLMD{
 
+void PDB::setAtomNumbers( const std::vector<AtomNumber>& atoms ){
+  positions.resize( atoms.size() ); occupancy.resize( atoms.size() ); 
+  beta.resize( atoms.size() ); numbers.resize( atoms.size() );
+  for(unsigned i=0;i<atoms.size();++i){ numbers[i]=atoms[i]; beta[i]=1.0; occupancy[i]=1.0; }
+}
+
+void PDB::addArgumentNames( const std::vector<std::string>& argument_names ){
+  std::string newrem = "ARG="+argument_names[0];
+  for(unsigned i=1;i<argument_names.size();++i) newrem+="," + argument_names[i];
+  remark.push_back( newrem );
+  for(unsigned i=0;i<argument_names.size();++i) remark.push_back( argument_names[i] + "=0" );
+}
+
+void PDB::setAtomPositions( const std::vector<Vector>& pos ){
+  plumed_dbg_assert( pos.size()==positions.size() );
+  for(unsigned i=0;i<positions.size();++i) positions[i]=pos[i];
+}
+
+void PDB::setArgumentValue( const std::string& argname, const double& val ){
+  bool replaced=false; std::string num; Tools::convert( val, num );
+  for(unsigned i=0;i<remark.size();++i){
+      if( remark[i].find(argname+"=")!=std::string::npos){
+          remark[i]=argname + "=" + num; replaced=true;
+      }
+  }
+  plumed_assert( replaced ); 
+}
+
+void PDB::addBlockEnd( const unsigned& end ){
+  block_ends.push_back( end );
+}
+
 unsigned PDB::getNumberOfAtomBlocks()const{
   return block_ends.size();
 }
diff --git a/src/tools/PDB.h b/src/tools/PDB.h
index ef458956042c2ff4ec2a856e89e2222f3d61ef3a..7c242fee93c3fcbc36b69d4adce8490108fc1682 100644
--- a/src/tools/PDB.h
+++ b/src/tools/PDB.h
@@ -98,6 +98,16 @@ public:
 /// Return the atom named aname from residue number resnum and chain.
 /// Chain=="*" matches any chain and makes it equivalent to getNamedAtomFromResidue.
   AtomNumber getNamedAtomFromResidueAndChain( const std::string& aname, const unsigned& resnum, const std::string& chain ) const;
+/// This is used in PLMD::analysis::AnalysisWithDataCollection to add the sizes of the domains for PLMD::MultiRMSD
+  void addBlockEnd( const unsigned& end );
+/// This is used in PLMD::analysis::AnalysisWithDataCollection to add the names of the arguments 
+  void addArgumentNames( const std::vector<std::string>& argument_names );
+/// This is used in PLMD::analysis::AnalysisWithDataCollection to add the numbers of the atoms
+  void setAtomNumbers( const std::vector<AtomNumber>& atoms );
+/// This is used in PLMD::analysis::AnalysisWithDataCollection to set the atom positions
+  void setAtomPositions( const std::vector<Vector>& pos );
+/// This is used in PLMD::analysis::AnalysisWithDataCollection to set the argument values 
+  void setArgumentValue( const std::string& argname, const double& val );
 /// Get the extents of the blocks containing the atoms
   const std::vector<unsigned> & getAtomBlockEnds() const ;
 /// Get the number of blocks of atoms in the pdb