diff --git a/obsolete/niDAC/DACTimingHanger.java b/obsolete/niDAC/DACTimingHanger.java
index a16ae51212241dbab3c975b021f9d4ddcad9adc3..197542a69b81c494b1d2b956e5d8e70abf90f386 100644
--- a/obsolete/niDAC/DACTimingHanger.java
+++ b/obsolete/niDAC/DACTimingHanger.java
@@ -18,6 +18,10 @@ import imageProc.core.ImgSink;
 import imageProc.core.MetaDataMap;
 import imageProc.core.Triggerable;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import otherSupport.bufferControl.DirectBufferControl;
 
@@ -259,8 +263,8 @@ public class DACTimingHanger extends ImgPipe implements ImgSink, Triggerable, Ra
 		
 		/*
 		String comediDev = SettingsManager.defaultGlobal().getProperty("comedi.device", "/dev/comedi0");
-		int subdevDIO = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
-		int subdevCLK = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.clock", "11"));
+		int subdevDIO = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
+		int subdevCLK = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.clock", "11"));
 				
 		comediWriter = new ComediAsyncWriter(comediDev + "_subd" + subdevDIO, subdevDIO, 
 												comediDev +"_subd" + subdevCLK, subdevCLK, 
@@ -269,9 +273,9 @@ public class DACTimingHanger extends ImgPipe implements ImgSink, Triggerable, Ra
 		//*/
 	
 		String comediDev = SettingsManager.defaultGlobal().getProperty("comedi.device", "/dev/comedi0");
-		int subdevDIO = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
-		int subdevCLK = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.clock", "11"));
-		int subdevPFI = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.pfi", "7"));
+		int subdevDIO = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
+		int subdevCLK = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.clock", "11"));
+		int subdevPFI = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.pfi", "7"));
 			
 		comediWriter = new ComediAsyncWriter(comediDev, subdevDIO, subdevCLK, subdevPFI, 
 												rawStore, null, 0,												
diff --git a/obsolete/niDAC/OfflineDACDrive.java b/obsolete/niDAC/OfflineDACDrive.java
index 802065b4820baa9341f1d9dbde74b5a00fdef015..20c8ea211fc57c4999461823442ed146bd004e0a 100644
--- a/obsolete/niDAC/OfflineDACDrive.java
+++ b/obsolete/niDAC/OfflineDACDrive.java
@@ -6,6 +6,10 @@ import comediJNI.Comedi;
 import comediJNI.ComediDef;
 import comediJNI.ComediJNIException;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** Direct driving of the controllers via DIO through Comedi
@@ -78,7 +82,7 @@ public class OfflineDACDrive implements Runnable {
 	public void run() {
 		
 		String comediDev = SettingsManager.defaultGlobal().getProperty("comedi.device", "/dev/comedi0");
-		int subdev = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
+		int subdev = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
 		
 		long dev = Comedi.open(comediDev + "_subd" + subdev);
 		if(dev == 0)
@@ -139,7 +143,7 @@ public class OfflineDACDrive implements Runnable {
 
 	public static final void setFLC(boolean high){
 		String comediDev = SettingsManager.defaultGlobal().getProperty("comedi.device", "/dev/comedi0");
-		int subdev = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
+		int subdev = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
 		
 		long dev = Comedi.open(comediDev + "_subd" + subdev);
 		if(dev == 0)
@@ -156,7 +160,7 @@ public class OfflineDACDrive implements Runnable {
 	
 	public static final void cameraTrig(int periodMS){
 		String comediDev = SettingsManager.defaultGlobal().getProperty("comedi.device", "/dev/comedi0");
-		int subdev = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
+		int subdev = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("comedi.subdevice.dio", "2"));
 		
 		long dev = Comedi.open(comediDev + "_subd" + subdev);
 		if(dev == 0)
diff --git a/pom.xml b/pom.xml
index d41cc04e054d2c05fb796d2f017353c2b682d696..3789df783365bd19ab7fbdada0431eb69049cd04 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,12 +57,12 @@
 		<dependency>
 			<groupId>algorithmrepository</groupId>
 			<artifactId>AlgorithmRepository</artifactId>
-			<version>1.2.2</version>
+			<version>1.4.23</version>
 		</dependency>
 		<dependency>
 			<groupId>javaOneLineUtils</groupId>
 			<artifactId>JavaOneLineUtils</artifactId>
-			<version>1.5.17</version>
+			<version>1.5.31</version>
 		</dependency>
 		<dependency>
 			<groupId>jfree</groupId>
diff --git a/src/imageProc/app/ImageProc_Profile.java b/src/imageProc/app/ImageProc_Profile.java
index dd45809c9bdc77cf009c8c8c625a08d5907abfde..d261f9fd899664f924a398851d25e2e9e986cd2e 100644
--- a/src/imageProc/app/ImageProc_Profile.java
+++ b/src/imageProc/app/ImageProc_Profile.java
@@ -15,6 +15,8 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import org.eclipse.swt.widgets.Display;
+
+import algorithmrepository.Algorithms;
 import imageProc.core.ConfigurableByID;
 import imageProc.core.ImagePipeController;
 import imageProc.core.ImageProcUtil;
@@ -23,6 +25,10 @@ import imageProc.core.ImgSource;
 import imageProc.core.swt.ImageWindow;
 import imageProc.database.json.JSONFileSettingsControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** The ImageProc GUI App to tie all the SWT modules together
@@ -195,7 +201,7 @@ public class ImageProc_Profile {
 			SettingsManager profile = new SettingsManager(fileName, true, global); //overlay on the minerva-settings
 			
 			if(profile.propertyDefined("imageProc.profile.assertHost") 
-					&& OneLiners.mustParseBoolean(profile.getProperty("imageProc.profile.assertHost"))){
+					&& Algorithms.mustParseBoolean(profile.getProperty("imageProc.profile.assertHost"))){
 				
 				String assertHost = profile.getProperty("imageProc.profile.host");
 				
@@ -261,7 +267,7 @@ public class ImageProc_Profile {
 					
 				ImageProcUtil.addImgPipeClass(sinkCls);
 									
-				boolean init = OneLiners.mustParseBoolean(profile.getProperty(basePath + ".sink"+sinkID+".init", "false"));
+				boolean init = Algorithms.mustParseBoolean(profile.getProperty(basePath + ".sink"+sinkID+".init", "false"));
 				if(init){
 					ImgSink sink;
 					try{
diff --git a/src/imageProc/control/arduinoComm/ArduinoCommHanger.java b/src/imageProc/control/arduinoComm/ArduinoCommHanger.java
index 7b419fb9f97ada7ca077147c2771171913639e48..1146bd62930e944824aadd5ac1dd210d29d5665a 100644
--- a/src/imageProc/control/arduinoComm/ArduinoCommHanger.java
+++ b/src/imageProc/control/arduinoComm/ArduinoCommHanger.java
@@ -5,6 +5,7 @@ import org.eclipse.swt.widgets.Composite;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
+import algorithmrepository.Algorithms;
 import imageProc.control.arduinoComm.LoggedComm.LogUser;
 import imageProc.control.arduinoComm.swt.ArduinoCommSWTControl;
 import imageProc.core.ConfigurableByID;
@@ -13,6 +14,10 @@ import imageProc.core.ImagePipeController;
 import imageProc.core.ImgPipe;
 import imageProc.core.ImgSink;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** Communications with the Arduino in-hall controller code IMSEArduinoCtrl */
@@ -36,7 +41,7 @@ public class ArduinoCommHanger extends ImgPipe implements ImgSink, EventReciever
 	public ArduinoCommHanger(boolean presetIsOutsideHall) {
 		String id = "General";		
 		config.portName = SettingsManager.defaultGlobal().getProperty("imageProc.arduinoComm."+id+".portName", "/dev/ttyACM0");
-		config.baudRate = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.arduinoComm."+id+".baudRate", "115200"));
+		config.baudRate = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.arduinoComm."+id+".baudRate", "115200"));
 		
 		serialComm = new LoggedComm(this);
 		dataAqCtrl = new DataAqCtrl(this);
@@ -215,7 +220,7 @@ public class ArduinoCommHanger extends ImgPipe implements ImgSink, EventReciever
 
 		String json = gson.toJson(config);
 		
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/control/arduinoComm/DataAqCtrl.java b/src/imageProc/control/arduinoComm/DataAqCtrl.java
index 2df9cb272eadb5ee8772ddfd73901af78520b204..df7b069b2cb5fc6090b0dbe7ca6a2a5c77af6001 100644
--- a/src/imageProc/control/arduinoComm/DataAqCtrl.java
+++ b/src/imageProc/control/arduinoComm/DataAqCtrl.java
@@ -5,6 +5,7 @@ import java.nio.ByteOrder;
 import java.nio.ShortBuffer;
 import java.util.Arrays;
 
+import algorithmrepository.Mat;
 import binaryMatrixFile.BinaryMatrixFile;
 import binaryMatrixFile.DataConvertPureJava;
 import edu.emory.mathcs.jtransforms.fft.FloatFFT_1D;
@@ -141,16 +142,16 @@ public class DataAqCtrl {
 		FloatFFT_1D fft = new FloatFFT_1D(nSamples);
 		
 		if(debug){
-			BinaryMatrixFile.mustWrite("/tmp/d0.bin", (double[])DataConvertPureJava.convert1DArray(dch0, new double[dch0.length]));
-			BinaryMatrixFile.mustWrite("/tmp/d1.bin", (double[])DataConvertPureJava.convert1DArray(dch1, new double[dch1.length]));
+			Mat.mustWriteBinary("/tmp/d0.bin", (double[])Mat.convert1DArray(dch0, new double[dch0.length]));
+			Mat.mustWriteBinary("/tmp/d1.bin", (double[])Mat.convert1DArray(dch1, new double[dch1.length]));
 		}
 		//fft both
 		fft.realForwardFull(dch1);
 		fft.realForwardFull(dch0);
 		
 		if(debug){
-			BinaryMatrixFile.mustWrite("/tmp/df0.bin", (double[])DataConvertPureJava.convert1DArray(dch0, new double[dch0.length]));
-			BinaryMatrixFile.mustWrite("/tmp/df1.bin", (double[])DataConvertPureJava.convert1DArray(dch1, new double[dch1.length]));
+			Mat.mustWriteBinary("/tmp/df0.bin", (double[])Mat.convert1DArray(dch0, new double[dch0.length]));
+			Mat.mustWriteBinary("/tmp/df1.bin", (double[])Mat.convert1DArray(dch1, new double[dch1.length]));
 		}
 		
 		int maxPos = -1;
@@ -188,8 +189,8 @@ public class DataAqCtrl {
 		}
 
 		if(debug){
-			BinaryMatrixFile.mustWrite("/tmp/df0b.bin", (double[])DataConvertPureJava.convert1DArray(dch0, new double[dch0.length]));
-			BinaryMatrixFile.mustWrite("/tmp/df1b.bin", (double[])DataConvertPureJava.convert1DArray(dch1, new double[dch0.length]));
+			Mat.mustWriteBinary("/tmp/df0b.bin", (double[])DataConvertPureJava.convert1DArray(dch0, new double[dch0.length]));
+			Mat.mustWriteBinary("/tmp/df1b.bin", (double[])DataConvertPureJava.convert1DArray(dch1, new double[dch0.length]));
 		}
 		
 		//and back into real space
@@ -197,8 +198,8 @@ public class DataAqCtrl {
 		fft.complexInverse(dch1, false);
 		
 		if(debug){
-			BinaryMatrixFile.mustWrite("/tmp/d0b.bin", (double[])DataConvertPureJava.convert1DArray(dch0, new double[dch0.length]));
-			BinaryMatrixFile.mustWrite("/tmp/d1b.bin", (double[])DataConvertPureJava.convert1DArray(dch1, new double[dch0.length]));
+			Mat.mustWriteBinary("/tmp/d0b.bin", (double[])DataConvertPureJava.convert1DArray(dch0, new double[dch0.length]));
+			Mat.mustWriteBinary("/tmp/d1b.bin", (double[])DataConvertPureJava.convert1DArray(dch1, new double[dch0.length]));
 		}		
 		
 		//we now have mg~exp(+i(wt + phi_m)) and dg~exp(+i(wt + phi_d)); so we can get the difference:
@@ -222,7 +223,7 @@ public class DataAqCtrl {
 			amp1Sig[i] = FastMath.sqrt(d1Re*d1Re + d1Im*d1Im);
 		}
 
-		//BinaryMatrixFile.mustWrite("/tmp/phasediff.bin", phaseDiff);
+		//Mat.mustWriteBinary("/tmp/phasediff.bin", phaseDiff);
 		double thres = 130*Math.PI/180; 
 		for(int i=1; i < nSamples; i++){
 			if(phaseDiff[i-1] > thres && phaseDiff[i] < -thres){
@@ -241,7 +242,7 @@ public class DataAqCtrl {
 			}
 		}
 		
-		//BinaryMatrixFile.mustWrite("/tmp/phasediff-uw.bin", phaseDiff);
+		//Mat.mustWriteBinary("/tmp/phasediff-uw.bin", phaseDiff);
 		
 		double measAng = 0, amp0 = 0, amp1 = 0;
 		int i0 = (int)(0.2*nSamples);
@@ -287,7 +288,7 @@ public class DataAqCtrl {
 	}
 	
 	public static void main(String[] args) {
-		double data[][] = BinaryMatrixFile.mustLoad("/tmp/pd.bin", true);
+		double data[][] = Mat.mustLoadBinary("/tmp/pd.bin", true);
 		double a[] = new double[1000];
 		for(int j=0; j < 1000; j++){
 			short d0[] = new short[1024];
@@ -300,7 +301,7 @@ public class DataAqCtrl {
 			a[j] = (new DataAqCtrl(null)).procSpinningPolAngle(0, d0, d1)[0];
 			System.out.println(j + "\t" + a[j]);
 		}
-		BinaryMatrixFile.mustWrite("/tmp/a.bin", a);
+		Mat.mustWriteBinary("/tmp/a.bin", a);
 	}
 
 	public short[][] getLastData() {
diff --git a/src/imageProc/control/arduinoComm/LoggedComm.java b/src/imageProc/control/arduinoComm/LoggedComm.java
index e82cac9e81ed63da4531a8763a984a76fdb0cf76..c87610805b3269178a7c528c8dd22cb3d282f806 100644
--- a/src/imageProc/control/arduinoComm/LoggedComm.java
+++ b/src/imageProc/control/arduinoComm/LoggedComm.java
@@ -10,8 +10,13 @@ import java.util.Enumeration;
 
 import com.fazecast.jSerialComm.SerialPort;
 
+import algorithmrepository.Algorithms;
 import imageProc.core.ImageProcUtil;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 public class LoggedComm implements Runnable {
@@ -82,7 +87,7 @@ public class LoggedComm implements Runnable {
 					serialLog.append('\n');
 					String lineStr = lineBuild.toString();
 					if(lineStr.startsWith("BINDUMP")){
-						int size = OneLiners.mustParseInt(lineStr.substring(7).trim());			
+						int size = Algorithms.mustParseInt(lineStr.substring(7).trim());			
 						lastBinaryDump = new byte[size];
 						binaryDumpPos  = 0;
 						if(serialPort != null)
diff --git a/src/imageProc/control/arduinoComm/MotorControl.java b/src/imageProc/control/arduinoComm/MotorControl.java
index a99193c9f8ccf12ae4e0a251223da0d87c4f9a90..585b6383a08e75c440ee3708501c2146b6dcdaba 100644
--- a/src/imageProc/control/arduinoComm/MotorControl.java
+++ b/src/imageProc/control/arduinoComm/MotorControl.java
@@ -1,7 +1,12 @@
 package imageProc.control.arduinoComm;
 
+import algorithmrepository.Algorithms;
 import imageProc.core.ImgSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class MotorControl {
 	public static final int nMotors = 3;
@@ -36,17 +41,17 @@ public class MotorControl {
 				motorPos[motorID] = 0;
 			
 			}else if(command.startsWith("POS")){
-				motorPos[motorID] = OneLiners.mustParseInt(line.substring(7).trim());
+				motorPos[motorID] = Algorithms.mustParseInt(line.substring(7).trim());
 				proc.setSeriesMetaData("ArduinoComm/motor/"+motorID+"/lastRecievedPos", motorPos[motorID], false);
 			
 			}else if(command.startsWith("ENBL")){
-				motorEnabled[motorID] = (OneLiners.mustParseInt(line.substring(8).trim()) != 0);
+				motorEnabled[motorID] = (Algorithms.mustParseInt(line.substring(8).trim()) != 0);
 				
 			}else if(command.startsWith("SWT")){
-				motorCfg[motorID].switchPolarity = (OneLiners.mustParseInt(line.substring(7).trim()) != 0);
+				motorCfg[motorID].switchPolarity = (Algorithms.mustParseInt(line.substring(7).trim()) != 0);
 				
 			}else if(command.startsWith("RDIR")){
-				motorCfg[motorID].dir = (OneLiners.mustParseInt(line.substring(8).trim()) != 0);
+				motorCfg[motorID].dir = (Algorithms.mustParseInt(line.substring(8).trim()) != 0);
 				
 			}
 			
diff --git a/src/imageProc/control/arduinoComm/SequenceCtrl.java b/src/imageProc/control/arduinoComm/SequenceCtrl.java
index e76a16b0fe86752a3e34488428ef5ef560b3fd26..6c59a98cf5aad02e292ae59233fa28bd4a21739b 100644
--- a/src/imageProc/control/arduinoComm/SequenceCtrl.java
+++ b/src/imageProc/control/arduinoComm/SequenceCtrl.java
@@ -5,6 +5,10 @@ import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import imageProc.core.ImgSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import otherSupport.bufferControl.DirectBufferControl;
 
diff --git a/src/imageProc/control/arduinoComm/SimpleIOCtrl.java b/src/imageProc/control/arduinoComm/SimpleIOCtrl.java
index b59b740a25b5c561dfae3e6e6a509a9a2f0e65ec..9ea0307005630ee016c4aa5b3d01673f000eeb73 100644
--- a/src/imageProc/control/arduinoComm/SimpleIOCtrl.java
+++ b/src/imageProc/control/arduinoComm/SimpleIOCtrl.java
@@ -1,7 +1,12 @@
 package imageProc.control.arduinoComm;
 
+import algorithmrepository.Algorithms;
 import imageProc.core.ImgSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SimpleIOCtrl {
 
@@ -42,8 +47,8 @@ public class SimpleIOCtrl {
 			if(command.startsWith("GET")){
 				boolean analog = (command.charAt(3) == 'A');
 				String parts[] = command.substring(4).split(",");
-				int pinNum = OneLiners.mustParseInt(parts[0].trim());
-				int val = OneLiners.mustParseInt(parts[1].trim());
+				int pinNum = Algorithms.mustParseInt(parts[0].trim());
+				int val = Algorithms.mustParseInt(parts[1].trim());
 				
 				if(analog){
 					analogValues[pinNum] = val;
diff --git a/src/imageProc/control/arduinoComm/swt/DataAqSWTGroup.java b/src/imageProc/control/arduinoComm/swt/DataAqSWTGroup.java
index bdc10f90fb8a90bceb2d0b6eaf42a1a6b9915bff..ee0dfcf97250c6be73f39d8885b4149d8b39a0ad 100644
--- a/src/imageProc/control/arduinoComm/swt/DataAqSWTGroup.java
+++ b/src/imageProc/control/arduinoComm/swt/DataAqSWTGroup.java
@@ -11,11 +11,17 @@ import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Listener;
 
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import imageProc.control.arduinoComm.ArduinoCommHanger;
 import imageProc.core.ImageProcUtil;
 import imageProc.graph.JFreeChartGraph;
 import imageProc.graph.Series;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class DataAqSWTGroup {
 	private ArduinoCommHanger proc;
@@ -107,7 +113,7 @@ public class DataAqSWTGroup {
 		double d2[] = proc.dataAqCtrl().getMeasAng();
 		if(d2 != null && d2.length >= 2){
 			ArrayList<Series> seriesList2 = new ArrayList<Series>(s.length);
-			double x2[] = OneLiners.linSpace(0, d2.length-1, d2.length);
+			double x2[] = Mat.linspace(0, d2.length-1, d2.length);
 			seriesList2.add(new Series("measAngh", x2, d2));
 			graph2.setData(seriesList2);
 		}
diff --git a/src/imageProc/control/arduinoComm/swt/MotorSWTGroup.java b/src/imageProc/control/arduinoComm/swt/MotorSWTGroup.java
index 2a375e4908836186fa601992aa8c5bd7817de5c8..64c75885267b1f6b471b2d9235a035bf446f2bfb 100644
--- a/src/imageProc/control/arduinoComm/swt/MotorSWTGroup.java
+++ b/src/imageProc/control/arduinoComm/swt/MotorSWTGroup.java
@@ -30,6 +30,10 @@ import imageProc.core.swt.EditableTable.TableModifyListener;
 import imageProc.proc.softwareBinning.SoftwareROIsConfig;
 import imageProc.proc.softwareBinning.SoftwareROIsConfig.SoftwareROI;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class MotorSWTGroup implements MotorPresetsHandler {
 	
diff --git a/src/imageProc/control/arduinoComm/swt/SerialSWTGroup.java b/src/imageProc/control/arduinoComm/swt/SerialSWTGroup.java
index d1275abd3a4e22acb26420d09a3b17ef20ab603c..ba08537cb46795debb9c15bb8bbc6f224db7796a 100644
--- a/src/imageProc/control/arduinoComm/swt/SerialSWTGroup.java
+++ b/src/imageProc/control/arduinoComm/swt/SerialSWTGroup.java
@@ -13,10 +13,15 @@ import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.Text;
 
+import algorithmrepository.Algorithms;
 import imageProc.control.arduinoComm.ArduinoCommConfig;
 import imageProc.control.arduinoComm.ArduinoCommHanger;
 import imageProc.core.ImageProcUtil;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SerialSWTGroup {
 	public static final long KEEPALIVE_TIME_MS = 60000;
@@ -117,7 +122,7 @@ public class SerialSWTGroup {
 	protected void settingsChangedEvent(Event event) {
 		ArduinoCommConfig config = proc.getConfig();
 		config.portName = portDeviceTextbox.getText();
-		config.baudRate = OneLiners.mustParseInt(baudRateTextbox.getText());
+		config.baudRate = Algorithms.mustParseInt(baudRateTextbox.getText());
 		
 	}
 
@@ -125,7 +130,7 @@ public class SerialSWTGroup {
 	private void connectButtonEvent(Event event) {
 		ArduinoCommConfig config = proc.getConfig();
 		config.portName = portDeviceTextbox.getText();
-		config.baudRate = OneLiners.mustParseInt(baudRateTextbox.getText());
+		config.baudRate = Algorithms.mustParseInt(baudRateTextbox.getText());
 		proc.serialComm().connectSerial(config.portName, config.baudRate);
 	}
 
diff --git a/src/imageProc/control/grbl/GRBLControl.java b/src/imageProc/control/grbl/GRBLControl.java
index 94e2e5ad89186957613d7c1a15cc5fa95516fe84..9974f4ca4ee61ca8eda46a1c4c64807bce7eb228 100644
--- a/src/imageProc/control/grbl/GRBLControl.java
+++ b/src/imageProc/control/grbl/GRBLControl.java
@@ -20,6 +20,10 @@ import imageProc.core.ImgPipe;
 import imageProc.core.ImgSink;
 import imageProc.core.EventReciever.Event;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** Example module for controlling a thing by Serial */
@@ -45,7 +49,7 @@ public class GRBLControl extends ImgPipe implements ImgSink, ConfigurableByID,
 	
 	public GRBLControl() {
 		config.portName = SettingsManager.defaultGlobal().getProperty("imageProc.thing.portName", "/dev/ttyS0");
-		config.baudRate = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.thing.baudRate", "115200"));
+		config.baudRate = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.thing.baudRate", "115200"));
 		serialComm = new LoggedComm(this);
 		serialComm.setCarriageReturn(false);
 	}
@@ -87,7 +91,7 @@ public class GRBLControl extends ImgPipe implements ImgSink, ConfigurableByID,
 
 		String json = gson.toJson(config);
 		
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/control/grbl/swt/AxisGroupSWTControl.java b/src/imageProc/control/grbl/swt/AxisGroupSWTControl.java
index 522a7c40dab3d15dd2b53e0da37be517e50c5eb9..872553c03fd671bb30eab85e4e96d3ab6e0e11d6 100644
--- a/src/imageProc/control/grbl/swt/AxisGroupSWTControl.java
+++ b/src/imageProc/control/grbl/swt/AxisGroupSWTControl.java
@@ -24,6 +24,10 @@ import imageProc.control.grbl.GRBLControl;
 import imageProc.core.ImageProcUtil;
 import imageProc.core.swt.EditableTable;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class AxisGroupSWTControl implements MotorPresetsHandler {
 	
@@ -143,7 +147,7 @@ public class AxisGroupSWTControl implements MotorPresetsHandler {
 		GRBLConfig config = proc.getConfig();
 
 		config.axes[axisID].name = nameTextBox.getText();
-		config.axes[axisID].pos = OneLiners.mustParseDouble(posTextBox.getText());
+		config.axes[axisID].pos = Algorithms.mustParseDouble(posTextBox.getText());
 		config.axes[axisID].target = (double)targetTextBox.getSelection()/1000;
 		config.axes[axisID].resolution = (double)resolutionTextBox.getSelection()/1000;
 		config.axes[axisID].speed = (double)speedTextBox.getSelection()/1000;
diff --git a/src/imageProc/control/grbl/swt/SerialSWTGroup.java b/src/imageProc/control/grbl/swt/SerialSWTGroup.java
index aa14d7d5202855acb32c36be527b9901337f99d2..46903a7ea76d1dafeb6bebff0be41342067f64ce 100644
--- a/src/imageProc/control/grbl/swt/SerialSWTGroup.java
+++ b/src/imageProc/control/grbl/swt/SerialSWTGroup.java
@@ -18,6 +18,10 @@ import imageProc.control.grbl.GRBLConfig;
 import imageProc.control.grbl.GRBLControl;
 import imageProc.core.ImageProcUtil;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SerialSWTGroup {
 	public static final long KEEPALIVE_TIME_MS = 60000;
@@ -144,22 +148,22 @@ public class SerialSWTGroup {
 
 	protected void updateChangedEvent(Event event) {
 		proc.setUpdatePeriod(updateCheckbox.getSelection(),
-				OneLiners.mustParseInt(updatePeriodTextbox.getText()));
+				Algorithms.mustParseInt(updatePeriodTextbox.getText()));
 	}
 
 	protected void settingsChangedEvent(Event event) {
 		GRBLConfig config = proc.getConfig();
-		config.homePullOff = OneLiners.mustParseInt(homePullOffTextbox.getText());
-		config.homeFeedRate = OneLiners.mustParseInt(homeFeedRateTextbox.getText());
-		config.homeSeekRate = OneLiners.mustParseInt(homeSeekRateTextbox.getText());
-		config.noiseWindow = OneLiners.mustParseInt(noiseWindowTextbox.getText());
+		config.homePullOff = Algorithms.mustParseInt(homePullOffTextbox.getText());
+		config.homeFeedRate = Algorithms.mustParseInt(homeFeedRateTextbox.getText());
+		config.homeSeekRate = Algorithms.mustParseInt(homeSeekRateTextbox.getText());
+		config.noiseWindow = Algorithms.mustParseInt(noiseWindowTextbox.getText());
 	}
 
 
 	private void connectButtonEvent(Event event) {
 		GRBLConfig config = proc.getConfig();
 		config.portName = portDeviceTextbox.getText();
-		config.baudRate = OneLiners.mustParseInt(baudRateTextbox.getText());
+		config.baudRate = Algorithms.mustParseInt(baudRateTextbox.getText());
 		proc.serialComm().connectSerial(config.portName, config.baudRate);
 	}
 
diff --git a/src/imageProc/control/power/raritan/RaritanPowerControl.java b/src/imageProc/control/power/raritan/RaritanPowerControl.java
index 7e7f564691c977e26e50601f2906593d8007ffdd..e48442b2ef5afb6a52e950a087fe16d64ccfaafa 100644
--- a/src/imageProc/control/power/raritan/RaritanPowerControl.java
+++ b/src/imageProc/control/power/raritan/RaritanPowerControl.java
@@ -19,6 +19,10 @@ import imageProc.core.ImgPipe;
 import imageProc.core.ImgSink;
 import imageProc.core.PowerControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** Example module for controlling a RaritanPower by Serial */
@@ -57,7 +61,7 @@ public class RaritanPowerControl extends ImgPipe implements ImgSink, Configurabl
 
 		String json = gson.toJson(config);
 		
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/control/standa/ximc/XIMCControl.java b/src/imageProc/control/standa/ximc/XIMCControl.java
index 0c24ee64676ba77fd180dfc9fd3a8fb3cac0b824..e6a64a2e8372fb6190ce7a6d1594da5f430818e5 100644
--- a/src/imageProc/control/standa/ximc/XIMCControl.java
+++ b/src/imageProc/control/standa/ximc/XIMCControl.java
@@ -17,6 +17,10 @@ import imageProc.core.ImgPipe;
 import imageProc.core.ImgSink;
 import imageProc.core.EventReciever.Event;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import ru.ximc.libximc.JXimc;
 import ru.ximc.libximc.JXimc.engine_settings_t;
@@ -76,7 +80,7 @@ public class XIMCControl extends ImgPipe implements ImgSink, ConfigurableByID, E
 
 		String json = gson.toJson(config);
 		
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/control/thing/ThingControl.java b/src/imageProc/control/thing/ThingControl.java
index dfcb9e893dc7de2dd266134283b791b0195a9333..04f54b9cdf9154095eba0c4b16ed58dd5f88d3a7 100644
--- a/src/imageProc/control/thing/ThingControl.java
+++ b/src/imageProc/control/thing/ThingControl.java
@@ -15,6 +15,10 @@ import imageProc.core.ImgPipe;
 import imageProc.core.ImgSink;
 import imageProc.core.EventReciever.Event;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** Example module for controlling a thing by Serial */
@@ -33,7 +37,7 @@ public class ThingControl extends ImgPipe implements ImgSink, ConfigurableByID,
 	
 	public ThingControl() {
 		config.portName = SettingsManager.defaultGlobal().getProperty("imageProc.thing.portName", "/dev/ttyS0");
-		config.baudRate = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.thing.baudRate", "115200"));
+		config.baudRate = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.thing.baudRate", "115200"));
 		serialComm = new LoggedComm(this);
 	}
 	
@@ -67,7 +71,7 @@ public class ThingControl extends ImgPipe implements ImgSink, ConfigurableByID,
 
 		String json = gson.toJson(config);
 		
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/control/thing/swt/SerialSWTGroup.java b/src/imageProc/control/thing/swt/SerialSWTGroup.java
index 986222c785d46cd11330e4390dc037aa790326d7..105842bdff67451cdf388e571fab13351299509a 100644
--- a/src/imageProc/control/thing/swt/SerialSWTGroup.java
+++ b/src/imageProc/control/thing/swt/SerialSWTGroup.java
@@ -17,6 +17,10 @@ import imageProc.control.arduinoComm.ArduinoCommConfig;
 import imageProc.control.thing.ThingConfig;
 import imageProc.control.thing.ThingControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SerialSWTGroup {
 	public static final long KEEPALIVE_TIME_MS = 60000;
@@ -91,7 +95,7 @@ public class SerialSWTGroup {
 	private void connectButtonEvent(Event event) {
 		ThingConfig config = proc.getConfig();
 		config.portName = portDeviceTextbox.getText();
-		config.baudRate = OneLiners.mustParseInt(baudRateTextbox.getText());
+		config.baudRate = Algorithms.mustParseInt(baudRateTextbox.getText());
 		proc.serialComm().connectSerial(config.portName, config.baudRate);
 	}
 
diff --git a/src/imageProc/core/BulkImageAllocation.java b/src/imageProc/core/BulkImageAllocation.java
index 381488761f5ce09dffd4098a9ec59525438d7822..dfa2b4d23ef7b498fd6b0faee00661d4daf5d26f 100644
--- a/src/imageProc/core/BulkImageAllocation.java
+++ b/src/imageProc/core/BulkImageAllocation.java
@@ -12,6 +12,10 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import otherSupport.bufferControl.DirectBufferControl;
 
diff --git a/src/imageProc/core/ImageProcUtil.java b/src/imageProc/core/ImageProcUtil.java
index affeac7f402f1baef3bae56df4616f707074c565..485ac8eb18b21b8d94f8037686551a249f1e6388 100644
--- a/src/imageProc/core/ImageProcUtil.java
+++ b/src/imageProc/core/ImageProcUtil.java
@@ -522,7 +522,7 @@ public abstract class ImageProcUtil {
 						Gson g = new Gson();
 						String s = g.toJson(o);
 						Object o2 = g.fromJson(s, desiredType);
-						//Object o2 = OneLiners.fixWeirdContainers(o, true);
+						//Object o2 = Mat.fixWeirdContainers(o, true);
 						return (T)o2;
 					}else{
 						//non arrays
diff --git a/src/imageProc/core/ImgProcPipeMultithread.java b/src/imageProc/core/ImgProcPipeMultithread.java
index 4efeed2d7c4cbd23548aeec254f5b62bf6a749fc..d636ae6a661b77c46b7403472ec38af399b3b267 100644
--- a/src/imageProc/core/ImgProcPipeMultithread.java
+++ b/src/imageProc/core/ImgProcPipeMultithread.java
@@ -7,6 +7,10 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.logging.Logger;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.RandomManager;
 import otherSupport.SettingsManager;
 
diff --git a/src/imageProc/core/swt/DispPropsPanel.java b/src/imageProc/core/swt/DispPropsPanel.java
index 3046376375b04c8515444e303de0041e4fba255d..eb21f8e453d606c29d6174ab88e62cf7974c6878 100644
--- a/src/imageProc/core/swt/DispPropsPanel.java
+++ b/src/imageProc/core/swt/DispPropsPanel.java
@@ -14,6 +14,10 @@ import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.Spinner;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 public class DispPropsPanel {
@@ -64,7 +68,7 @@ public class DispPropsPanel {
         swtColorLogScale.setMinimum(0);
         swtColorLogScale.setMaximum(200);
         swtColorLogScale.setIncrement(1);
-        swtColorLogScale.setSelection((int)(OneLiners.mustParseDouble(SettingsManager.defaultGlobal().getProperty("imageProc.gui.colorLogScale", "1.0")) / 0.02));
+        swtColorLogScale.setSelection((int)(Algorithms.mustParseDouble(SettingsManager.defaultGlobal().getProperty("imageProc.gui.colorLogScale", "1.0")) / 0.02));
         swtColorLogScale.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 1, 1));
         swtColorLogScale.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { colorScaleEvent(event, false); } });
 
diff --git a/src/imageProc/core/swt/EditableTable.java b/src/imageProc/core/swt/EditableTable.java
index 0134347b7097313b17dbe4fc519da050765b446e..eee59084a48d2f6a30c7eab5bb7fd80b20b6963f 100644
--- a/src/imageProc/core/swt/EditableTable.java
+++ b/src/imageProc/core/swt/EditableTable.java
@@ -17,6 +17,10 @@ import org.eclipse.swt.widgets.Text;
 
 import imageProc.proc.softwareBinning.SoftwareROIsConfig.SoftwareROI;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class EditableTable extends Table {
 
diff --git a/src/imageProc/core/swt/ImageWindow.java b/src/imageProc/core/swt/ImageWindow.java
index 33b23dcc2e6e08176b9910116d8fc501908387ca..35d317e19ad3341fb2e03eeef61da114930a4859 100644
--- a/src/imageProc/core/swt/ImageWindow.java
+++ b/src/imageProc/core/swt/ImageWindow.java
@@ -54,7 +54,11 @@ import imageProc.database.gmds.GMDSUtil;
 import imageProc.proc.fft.FFTProcessor;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
-import otherSupport.ColorMaps;
+import algorithmrepository.Algorithms;
+import algorithmrepository.ColorMaps;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.RandomManager;
 import otherSupport.SettingsManager;
 
@@ -142,8 +146,8 @@ public class ImageWindow extends ImgPipe implements ImgSink {
 	}
 	
 	public ImageWindow(Display swtDisplay, ImgSource source, int imageIndex) {
-		scaleX = OneLiners.mustParseDouble(SettingsManager.defaultGlobal().getProperty("imageProc.gui.scaleX", "1.0"));
-		scaleY = OneLiners.mustParseDouble(SettingsManager.defaultGlobal().getProperty("imageProc.gui.scaleY", "1.0"));
+		scaleX = Algorithms.mustParseDouble(SettingsManager.defaultGlobal().getProperty("imageProc.gui.scaleX", "1.0"));
+		scaleY = Algorithms.mustParseDouble(SettingsManager.defaultGlobal().getProperty("imageProc.gui.scaleY", "1.0"));
 		breakAspect = (scaleX != scaleY);
 		
 		//this.connectedSource = source; //removed this , otherwise setSource() doesn't know the source has changed
@@ -176,7 +180,7 @@ public class ImageWindow extends ImgPipe implements ImgSink {
 	}
 	
 	private void createWindow(Display display){
-		cMapType = OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.gui.colorMap", "0"));
+		cMapType = Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.gui.colorMap", "0"));
 		
 		swtShell = new Shell(display, SWT.RESIZE | SWT.DIALOG_TRIM | SWT.MIN | SWT.MAX);
 		swtShell.setText("Image [init]");
@@ -322,8 +326,8 @@ public class ImageWindow extends ImgPipe implements ImgSink {
         swtShell.pack();        
         swtShell.open();
         swtShell.setSize(
-        		OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.gui.windowWidth", "1200")),
-        		OneLiners.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.gui.windowHeight", "800")));
+        		Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.gui.windowWidth", "1200")),
+        		Algorithms.mustParseInt(SettingsManager.defaultGlobal().getProperty("imageProc.gui.windowHeight", "800")));
         
         swtShell.setMaximized(Boolean.parseBoolean(SettingsManager.defaultGlobal().getProperty("imageProc.gui.maximized", "false")));
         
@@ -1070,9 +1074,9 @@ public class ImageWindow extends ImgPipe implements ImgSink {
 					 if(iMap >= cmapData.length)
 						throw new IllegalArgumentException("Unknown color map: " + colorMap);
 					 int nD = cmapData[iMap][0].length;
-					 Interpolation1D interpR = new Interpolation1D(OneLiners.linSpace(0, 1, nD), cmapData[iMap][0]);
-					 Interpolation1D interpG = new Interpolation1D(OneLiners.linSpace(0, 1, nD), cmapData[iMap][1]);
-					 Interpolation1D interpB = new Interpolation1D(OneLiners.linSpace(0, 1, nD), cmapData[iMap][2]);
+					 Interpolation1D interpR = new Interpolation1D(Mat.linspace(0, 1, nD), cmapData[iMap][0]);
+					 Interpolation1D interpG = new Interpolation1D(Mat.linspace(0, 1, nD), cmapData[iMap][1]);
+					 Interpolation1D interpB = new Interpolation1D(Mat.linspace(0, 1, nD), cmapData[iMap][2]);
 
 					 cMap = new byte[nCols*3];
 					 for(int i=0; i < nCols; i++){
@@ -1159,7 +1163,7 @@ public class ImageWindow extends ImgPipe implements ImgSink {
 					//*/
 					
 					/* This turns out to be slower... meh
-					int c2 = OneLiners.getNearestIndex(vMap, f);
+					int c2 = Mat.getNearestIndex(vMap, f);
 					/*if(c2 != c){
 						System.out.println(f + "\t" + c + "\t" + c2);
 					}//*/
diff --git a/src/imageProc/core/swt/InfoPanel.java b/src/imageProc/core/swt/InfoPanel.java
index eebd4af2d5bb747f8ddb809298328cceb5b84915..3c7e909ff391cf2a858cbfa8d47c745a50a29abd 100644
--- a/src/imageProc/core/swt/InfoPanel.java
+++ b/src/imageProc/core/swt/InfoPanel.java
@@ -34,6 +34,10 @@ import imageProc.core.ImgPipe;
 import imageProc.core.ImgSink;
 import imageProc.core.ImgSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import otherSupport.bufferControl.DirectBufferControl;
 
diff --git a/src/imageProc/database/gmds/GMDSPipe.java b/src/imageProc/database/gmds/GMDSPipe.java
index ef08fd5fabe754edd68457bbdaaa2393125bd372..c947c0cef600d3f73f75c3b1f7061f3eed53012d 100644
--- a/src/imageProc/database/gmds/GMDSPipe.java
+++ b/src/imageProc/database/gmds/GMDSPipe.java
@@ -20,6 +20,10 @@ import mds.AugShotfileFetcher;
 import mds.GMDSFetcher;
 import mds.MdsPlusException;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import signals.Signal;
 import signals.aug.AUGSignal;
diff --git a/src/imageProc/database/gmds/GMDSSettingsControl.java b/src/imageProc/database/gmds/GMDSSettingsControl.java
index 78e6ac7d0da41c44b86762aaffc95467aee36fb1..6affa25617d91c575fc16c0977fc3a1103f55d5d 100644
--- a/src/imageProc/database/gmds/GMDSSettingsControl.java
+++ b/src/imageProc/database/gmds/GMDSSettingsControl.java
@@ -15,6 +15,10 @@ import org.eclipse.swt.widgets.Spinner;
 import imageProc.core.ConfigurableByID;
 import imageProc.core.swt.SWTSettingsControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** Insert for saving/load settings to/from GMDS database */
 public class GMDSSettingsControl implements SWTSettingsControl {	
@@ -74,7 +78,7 @@ public class GMDSSettingsControl implements SWTSettingsControl {
 		String parts[] = config.strip().split("/");
 		if(parts[0].equals("gmds")) {
 			loadExpCombo.setText(parts.length >= 2 ? parts[1] : "");
-			loadPulseSpiner.setSelection(parts.length >= 3 ? OneLiners.mustParseInt(parts[1]) : 0);
+			loadPulseSpiner.setSelection(parts.length >= 3 ? Algorithms.mustParseInt(parts[1]) : 0);
 		}
 	}
 }
diff --git a/src/imageProc/database/gmds/GMDSSink.java b/src/imageProc/database/gmds/GMDSSink.java
index e448d925ae26308289846764e0ad879a937640a3..d2460102f7a0746a2dbc538218516a5ac025c58d 100644
--- a/src/imageProc/database/gmds/GMDSSink.java
+++ b/src/imageProc/database/gmds/GMDSSink.java
@@ -22,6 +22,10 @@ import imageProc.core.MetaDataMap;
 import imageProc.core.MetaDataMap.MetaData;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import signals.gmds.GMDSSignal;
 
@@ -227,7 +231,7 @@ public class GMDSSink extends GMDSPipe implements ImgSink, DatabaseSink {
 			try{
 				if(img instanceof DoubleFlatArrayImage){
 					imgSig = new GMDSSignal(imgDesc, 
-									OneLiners.unflatten(
+									Mat.unflatten(
 											((DoubleFlatArrayImage) img).getFlatArray(), 
 											img.getHeight(), 
 											img.getWidth()));
diff --git a/src/imageProc/database/gmds/GMDSSource.java b/src/imageProc/database/gmds/GMDSSource.java
index bdd4885e79adfb485bd192ebdd3d1f8cd927c314..7d311256e454cd6cb353dd1de95104f3687950d0 100644
--- a/src/imageProc/database/gmds/GMDSSource.java
+++ b/src/imageProc/database/gmds/GMDSSource.java
@@ -28,6 +28,10 @@ import imageProc.core.ImgSource;
 import mds.GMDSFetcher;
 import mds.MdsPlusException;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import signals.Signal;
 import signals.gmds.GMDSSignal;
@@ -112,7 +116,7 @@ public class GMDSSource extends GMDSPipe implements ImgSource {
 				int maxImgNo = 0;
 				for (String sigName : sigs) {
 					if (sigName != null && sigName.matches("[/]*" + path + "[/]*/IMAGE_[0-9]*.*")) {
-						int imgNo = OneLiners.mustParseInt(sigName .replaceFirst("[/]*" + path + "[/]*IMAGE_([0-9]*).*", "$1"));
+						int imgNo = Algorithms.mustParseInt(sigName .replaceFirst("[/]*" + path + "[/]*IMAGE_([0-9]*).*", "$1"));
 						if (imgNo > maxImgNo)
 							maxImgNo = imgNo;
 					}
diff --git a/src/imageProc/database/json/JSONFileSettingsControl.java b/src/imageProc/database/json/JSONFileSettingsControl.java
index ef5a152953d762cd7510fdd25d5078a115ed4349..e3f343d38acd9979151ca9a5a73eecf23e81f24c 100644
--- a/src/imageProc/database/json/JSONFileSettingsControl.java
+++ b/src/imageProc/database/json/JSONFileSettingsControl.java
@@ -24,6 +24,10 @@ import descriptors.SignalDesc;
 import imageProc.core.ConfigurableByID;
 import imageProc.core.swt.SWTSettingsControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 /** Insert for saving/load settings to/from a json file on disk
diff --git a/src/imageProc/graph/GraphUtilProcessor.java b/src/imageProc/graph/GraphUtilProcessor.java
index 21d2861e90687ee2fea25c87a7b16d9cf50b2587..c60bfbbbe8911592008b18f188c98f972ca9ff01 100644
--- a/src/imageProc/graph/GraphUtilProcessor.java
+++ b/src/imageProc/graph/GraphUtilProcessor.java
@@ -19,6 +19,7 @@ import algorithmrepository.ExtrapolationMode;
 import algorithmrepository.Interpolation1D;
 import algorithmrepository.InterpolationMode;
 import algorithmrepository.LinearInterpolation1D;
+import algorithmrepository.Mat;
 import binaryMatrixFile.AsciiMatrixFile;
 import imageProc.core.ImageProcUtil;
 import imageProc.core.ImagePipeController;
@@ -632,7 +633,7 @@ public class GraphUtilProcessor extends ImgPipe implements ImgSink {
 
 		int i=0;
 		for(Series series : seriesList){			
-			AsciiMatrixFile.mustWrite(System.getProperty("java.io.tmpdir") + "/graphData/"+ ((series.name() != null) ? series.name() : i) + ".txt",
+			Mat.mustWriteAscii(System.getProperty("java.io.tmpdir") + "/graphData/"+ ((series.name() != null) ? series.name() : i) + ".txt",
 					new double[][]{ series.x, series.data }, true);			
 			i++;
 		}
diff --git a/src/imageProc/graph/MetaDataPlotter.java b/src/imageProc/graph/MetaDataPlotter.java
index e25485e5729529bf72ff4ad60f5396c158337e5f..e6fbcbddf41569fddd6f464072d5cb21dc00d720 100644
--- a/src/imageProc/graph/MetaDataPlotter.java
+++ b/src/imageProc/graph/MetaDataPlotter.java
@@ -4,6 +4,8 @@ import imageProc.core.Img;
 import imageProc.core.MetaDataMap;
 import imageProc.core.MetaDataMap.MetaData;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 
 import java.lang.reflect.Array;
@@ -71,7 +73,7 @@ public class MetaDataPlotter {
 			int nT = proc.getConnectedSource().getNumImages();
 			int posX = proc.getPosX(), posY = proc.getPosY(), posT = proc.getSelectedSourceIndex();
 			
-			seriesMetaData = OneLiners.fixWeirdContainers(seriesMetaData, true);
+			seriesMetaData = Mat.fixWeirdContainers(seriesMetaData, true);
 			
 			if(seriesMetaData instanceof double[][][]){
 				double arr[][][] = ((double[][][]) seriesMetaData);
diff --git a/src/imageProc/graph/SimpleGraph.java b/src/imageProc/graph/SimpleGraph.java
index b47fd293f6e7df20ee272a9c25460aeae7896418..0bd629b031216d7fb511f9042e0d6947f350e1e5 100644
--- a/src/imageProc/graph/SimpleGraph.java
+++ b/src/imageProc/graph/SimpleGraph.java
@@ -8,6 +8,10 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Group;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SimpleGraph extends Composite {
 	
@@ -41,14 +45,14 @@ public class SimpleGraph extends Composite {
 	private void calcXRanges(){
 		xValFullRange = new double[xVals.length][];
 		for(int i=0; i < xVals.length; i++){
-			xValFullRange[i] = OneLiners.getRange(xVals[i]);
+			xValFullRange[i] = Mat.getRange(xVals[i]);
 		}
 	}
 	
 	private void calcDataRanges(){		
 		dataFullRange = new double[data.length][];
 		for(int i=0; i < data.length; i++){
-			dataFullRange[i] = OneLiners.getRange(data[i]);
+			dataFullRange[i] = Mat.getRange(data[i]);
 		}	
 	}
 	
@@ -60,7 +64,7 @@ public class SimpleGraph extends Composite {
 		
 		dataDispRange = new double[data.length][];
 		for(int i=0; i < data.length; i++){
-			dataFullRange[i] = OneLiners.getRange(data[i]);
+			dataFullRange[i] = Mat.getRange(data[i]);
 		}	
 	}
 	
diff --git a/src/imageProc/graph/shapeFit/CalFitScanner.java b/src/imageProc/graph/shapeFit/CalFitScanner.java
index 00f063e8a86c909326358da9daf76fa7eb36d358..4ebd9e58e8c7d8605ff861e4c23c3af583682e9b 100644
--- a/src/imageProc/graph/shapeFit/CalFitScanner.java
+++ b/src/imageProc/graph/shapeFit/CalFitScanner.java
@@ -10,6 +10,10 @@ import imageProc.database.gmds.GMDSUtil;
 import imageProc.graph.GraphUtilProcessor;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.StatusOutput;
 import signals.gmds.GMDSSignal;
 
@@ -52,8 +56,8 @@ public class CalFitScanner {
 		double dx = (double)w / nX;
 		double dy = (double)h / nY;
 		
-		double meanX[] = OneLiners.linSpace(dx/2, w-(dx/2), nX);
-		double meanY[] = OneLiners.linSpace(dy/2, h-(dy/2), nY);
+		double meanX[] = Mat.linspace(dx/2, w-(dx/2), nX);
+		double meanY[] = Mat.linspace(dy/2, h-(dy/2), nY);
 		
 		int nP = proc.getFitter().getInitParams().length;
 		int nT = proc.getConnectedSource().getNumImages();
diff --git a/src/imageProc/graph/shapeFit/FuncFitter.java b/src/imageProc/graph/shapeFit/FuncFitter.java
index 2678609ed1a88d309cb635eb26bb6cbf5e8d612f..216ac1a3dcdb45dcfbdadabf3f4649aa073b7bb3 100644
--- a/src/imageProc/graph/shapeFit/FuncFitter.java
+++ b/src/imageProc/graph/shapeFit/FuncFitter.java
@@ -14,6 +14,10 @@ import imageProc.graph.GraphUtilProcessor;
 import imageProc.graph.Series;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.ScientificNumberFormat;
 import seed.optimization.HookeAndJeeves;
 
@@ -79,8 +83,8 @@ public class FuncFitter {
 		
 		seriesList.clear();
 		
-		double rangeX[] = OneLiners.getRange(data);
-		double rangeD[] = OneLiners.getRange(data);
+		double rangeX[] = Mat.getRange(data);
+		double rangeD[] = Mat.getRange(data);
 		
 		//double initP[] = (estimateInitP || this.initP == null) ? null : this.initP.clone();
 		if(estimateInitP)
@@ -367,7 +371,7 @@ public class FuncFitter {
 		}		
 		//rescale abs for graph
 		double maxAbs = abs[maxIdx];
-		double range[] = OneLiners.getRange(data);
+		double range[] = Mat.getRange(data);
 		for(int i=0; i < n/2; i++){
 			abs[i] *= range[1] / maxAbs;
 		}
@@ -520,7 +524,7 @@ public class FuncFitter {
 		
 		System.out.println("Cost: init = " + costF.evalAllParams(initP) + "\tFinal = " + costF.evalAllParams(pAll));
 		
-		//BinaryMatrixFile.mustWrite("/tmp/blah.bin", new double[][]{ x, data, costF.func(initP), costF.func(p) }, true);
+		//Mat.mustWriteBinary("/tmp/blah.bin", new double[][]{ x, data, costF.func(initP), costF.func(p) }, true);
 		
 		//add these at start, shifting others down				
 		seriesList.add(0, new Series("init", x, costF.func(initP))); 
@@ -590,7 +594,7 @@ public class FuncFitter {
 					return;
 				}
 				
-				double maxX = Algorithms.max(x);
+				double maxX = Mat.max(x);
 				int i=-1;
 				ScientificNumberFormat fmt = new ScientificNumberFormat("#.###","#.##E0",6);
 				do{
diff --git a/src/imageProc/graph/shapeFit/FuncFitterSWTControl.java b/src/imageProc/graph/shapeFit/FuncFitterSWTControl.java
index 3bed1f270ab4a3643cbcf780d20cc07731e2aaf1..7f4f6700d38f6814ed455a5468ca47d24fb64f94 100644
--- a/src/imageProc/graph/shapeFit/FuncFitterSWTControl.java
+++ b/src/imageProc/graph/shapeFit/FuncFitterSWTControl.java
@@ -25,6 +25,10 @@ import imageProc.core.ImageProcUtil;
 import imageProc.database.gmds.GMDSUtil;
 import imageProc.graph.GraphUtilProcessor;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 public class FuncFitterSWTControl {
@@ -217,8 +221,8 @@ public class FuncFitterSWTControl {
 		data[0][0] = shapeCombo.getSelectionIndex();
 		for(int i=0; i < nP; i++){
 			TableItem item = paramsTable.getItem(i);
-			data[i+1][0] = OneLiners.mustParseDouble(item.getText(1));
-			data[i+1][1] = OneLiners.mustParseDouble(item.getText(2));
+			data[i+1][0] = Algorithms.mustParseDouble(item.getText(1));
+			data[i+1][1] = Algorithms.mustParseDouble(item.getText(2));
 			data[i+1][2] = item.getText(3).startsWith("Y") ? 1 : 0;
 		}
 		
@@ -286,7 +290,7 @@ public class FuncFitterSWTControl {
 		boolean enable[] = new boolean[nP];
 		for(int i=0; i < nP; i++){
 			TableItem item = paramsTable.getItem(i);
-			initP[i] = OneLiners.mustParseDouble(item.getText(1));
+			initP[i] = Algorithms.mustParseDouble(item.getText(1));
 			enable[i] = item.getText(3).startsWith("Y");
 		}
 		proc.getFitter().setInitParams(initP);
@@ -358,7 +362,7 @@ public class FuncFitterSWTControl {
 	
 	private void setTableEntry(int column, TableItem item, String str){
 		if(column == 1 || column == 2){
-			item.setText(column, Double.toString(OneLiners.mustParseDouble(str)));
+			item.setText(column, Double.toString(Algorithms.mustParseDouble(str)));
 		}else if(column == 3){
 			item.setText(column, (str.startsWith("Y") || str.startsWith("y")) ? "Yes" : "No");
 		}
diff --git a/src/imageProc/metaview/MetaDataManager.java b/src/imageProc/metaview/MetaDataManager.java
index 1fb5dcf0ac406df31c9e6ae21399934a8fbf0769..750cb74d87d3ce22399fd2197cecd6c44e79f21f 100644
--- a/src/imageProc/metaview/MetaDataManager.java
+++ b/src/imageProc/metaview/MetaDataManager.java
@@ -11,6 +11,10 @@ import imageProc.core.MetaDataMap;
 import imageProc.core.MetaDataMap.MetaData;
 import imageProc.core.EventReciever.Event;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 import org.eclipse.swt.widgets.Composite;
 
@@ -195,7 +199,7 @@ public class MetaDataManager extends ImgPipe implements ImgSink, ConfigurableByI
 			
 			String json = gson.toJson(persistentMetadata);
 		
-			OneLiners.TextToFile(fileName, json);
+			OneLiners.textToFile(fileName, json);
 			lastLoadedConfig = id;
 		}
 	}
diff --git a/src/imageProc/metaview/MetaDataManagerSWTController.java b/src/imageProc/metaview/MetaDataManagerSWTController.java
index 25659609241487f95c08cff6bae65ea0a0154831..3dd3b7b03fe6b8820630b43737e47fcc84543974 100644
--- a/src/imageProc/metaview/MetaDataManagerSWTController.java
+++ b/src/imageProc/metaview/MetaDataManagerSWTController.java
@@ -56,6 +56,10 @@ import imageProc.database.json.JSONFileSettingsControl;
 import imageProc.graph.JFreeChartGraph;
 import imageProc.graph.Series;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class MetaDataManagerSWTController implements ImagePipeController {
 	public static final String colNames[] = { "ID", "Persistent?", "Time Series", "Datatype", "Level" };
diff --git a/src/imageProc/proc/demod/CalibrationFit.java b/src/imageProc/proc/demod/CalibrationFit.java
index 63cf5583a01ef546efd4f39ea5a841dc2c1dcf46..35fa465a2e3951b73f5a84595d68c0ba360b58a8 100644
--- a/src/imageProc/proc/demod/CalibrationFit.java
+++ b/src/imageProc/proc/demod/CalibrationFit.java
@@ -39,8 +39,8 @@ public class CalibrationFit {
 			for(int j=0; j < muData[i].length; j++)
 				muData[i][j] = FastMath.abs(muData[i][j]);
 
-		//offset = new CubicInterpolation2D(x, y, OneLiners.transpose(offData));
-		//mu = new CubicInterpolation2D(x, y,  OneLiners.transpose(muData));
+		//offset = new CubicInterpolation2D(x, y, Mat.transpose(offData));
+		//mu = new CubicInterpolation2D(x, y,  Mat.transpose(muData));
 		offset = new CubicInterpolation2D(x, y, offData);
 		mu = new CubicInterpolation2D(x, y,  muData);
 		effEllip = new CubicInterpolation2D(x, y, ellipData);
diff --git a/src/imageProc/proc/demod/ComponentsFinder.java b/src/imageProc/proc/demod/ComponentsFinder.java
index 3d62aafdf7f73ebe7f3f7a9249952995463a3779..5be421e2e07ac6053111f85ee7fb19bf8f4e46e7 100644
--- a/src/imageProc/proc/demod/ComponentsFinder.java
+++ b/src/imageProc/proc/demod/ComponentsFinder.java
@@ -6,6 +6,7 @@ import java.util.Comparator;
 import java.util.LinkedList;
 import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
 
+import algorithmrepository.Mat;
 import binaryMatrixFile.BinaryMatrixFile;
 import imageProc.core.ComplexImage;
 import net.jafama.FastMath;
@@ -84,7 +85,7 @@ public class ComponentsFinder {
 				}
 			}
 		}
-		BinaryMatrixFile.mustWrite("/tmp/a", smoothed, false);
+		Mat.mustWriteBinary("/tmp/a", smoothed, false);
 		Collections.sort(peakList);
 		
 		ArrayList <Peak> topPeaks = new ArrayList<Peak>();
diff --git a/src/imageProc/proc/demod/DSHDemod.java b/src/imageProc/proc/demod/DSHDemod.java
index d38888d5e65e5cee3cb19fc5df20469387fb0fa5..6ec45744f3a17408aee91af9d26b4e650b49a452 100644
--- a/src/imageProc/proc/demod/DSHDemod.java
+++ b/src/imageProc/proc/demod/DSHDemod.java
@@ -33,6 +33,10 @@ import imageProc.core.ImgSource;
 import imageProc.database.gmds.GMDSUtil;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.Signal;
 import signals.gmds.GMDSSignal;
 
@@ -823,7 +827,7 @@ public class DSHDemod extends ImgProcPipe implements ConfigurableByID {
 
 		if (id.startsWith("gmds")) {
 			String parts[] = id.split("/");
-			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 		} else if (id.startsWith("jsonfile:")) {
 			loadConfigJSON(id.substring(9));
 		}else {
@@ -896,7 +900,7 @@ public class DSHDemod extends ImgProcPipe implements ConfigurableByID {
 	public void saveConfig(String id) {
 		if (id.startsWith("gmds")) {
 			String parts[] = id.split("/");
-			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 			lastLoadedConfig = id;
 		} else if (id.startsWith("jsonfile:")) {
 			saveConfigJSON(id.substring(9));
@@ -928,7 +932,7 @@ public class DSHDemod extends ImgProcPipe implements ConfigurableByID {
 		jobj.add("calibImgIdx", new JsonPrimitive(calibImgIdx));
 		jobj.add("calibImgAng", new JsonPrimitive(calibImgAng));
 
-		OneLiners.TextToFile(fileName, jobj.toString());
+		OneLiners.textToFile(fileName, jobj.toString());
 	}
 
 	public void saveConfigGMDS(String experiment, int pulse) {
@@ -997,7 +1001,7 @@ public class DSHDemod extends ImgProcPipe implements ConfigurableByID {
 
 		} else if (calibImgPath.matches(".*@[0-9.]*")) { // give image is the
 															// given angle
-			this.calibImgAng = OneLiners.mustParseDouble(calibImgPath.replaceFirst(".*@([0-9.]*)", "$1")) * Math.PI
+			this.calibImgAng = Algorithms.mustParseDouble(calibImgPath.replaceFirst(".*@([0-9.]*)", "$1")) * Math.PI
 					/ 180;
 			path = calibImgPath.replaceFirst("(.*)@[0-9.]*", "$1");
 
@@ -1025,7 +1029,7 @@ public class DSHDemod extends ImgProcPipe implements ConfigurableByID {
 			if (calibData == null) {
 				// binary matrix file?
 				try {
-					calibData = BinaryMatrixFile.mustLoad(path, false);
+					calibData = Mat.mustLoadBinary(path, false);
 				} catch (Exception e) {
 				}
 			}
diff --git a/src/imageProc/proc/fastSpec/FastSpecEntry.java b/src/imageProc/proc/fastSpec/FastSpecEntry.java
index 5f16a4c436c8dcd743b3cbb875fe6de8b81dc833..ba9469642f3a0f861a26d2694d77195c36db7103 100644
--- a/src/imageProc/proc/fastSpec/FastSpecEntry.java
+++ b/src/imageProc/proc/fastSpec/FastSpecEntry.java
@@ -5,6 +5,10 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** Configuration for simple fast spectroscopy line fitting */ 
 public class FastSpecEntry {
@@ -166,8 +170,8 @@ public class FastSpecEntry {
 			
 		atomicNumber = OneLiners.findBestMatchingString(periodicTable, matcher.group(1));
 		ionisationState = fromRoman(matcher.group(2))-1;
-		upperState = OneLiners.mustParseInt(matcher.group(3));
-		lowerState = OneLiners.mustParseInt(matcher.group(4));
+		upperState = Algorithms.mustParseInt(matcher.group(3));
+		lowerState = Algorithms.mustParseInt(matcher.group(4));
 	}
 	
 	public HashMap<String, Object> toMap() {
diff --git a/src/imageProc/proc/fastSpec/FastSpecProcessor.java b/src/imageProc/proc/fastSpec/FastSpecProcessor.java
index a1053dabe1112b54dae917db5982c564bf94a7e3..e6e728b0f0a3d8a6583860c56a0c640be69378af 100644
--- a/src/imageProc/proc/fastSpec/FastSpecProcessor.java
+++ b/src/imageProc/proc/fastSpec/FastSpecProcessor.java
@@ -35,12 +35,14 @@ import imageProc.proc.fastSpec.FastSpecConfig.InitMode;
 import imageProc.proc.fastSpec.swt.FastSpecSWTController;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
 import otherSupport.SettingsManager;
 import seed.digeom.FunctionND;
 import seed.digeom.IDomain;
 import seed.digeom.RectangularDomain;
 import seed.matrix.DenseMatrix;
-import seed.matrix.Mat;
 import seed.matrix.Matrix;
 import seed.optimization.BracketingByParameterSpace;
 import seed.optimization.CoordinateDescentDirection;
@@ -211,19 +213,19 @@ public class FastSpecProcessor extends ImgPipe implements ImgSink, ConfigurableB
 				if(fitSingleEntry == null && !singleFrame){
 					for (FastSpecEntry specEntry : config.specEntries) {
 						
-						specEntry.fitAmplitude = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitUncertaintyAmpltiude = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitX0 = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitUncertaintyX0 = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitSlope = OneLiners.fillArray(Double.NaN, nF);
-						//specEntry.fitUncertaintySlope = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitY0 = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitUncertaintyY0 = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitSigma = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitUncertaintySigma = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitPower = OneLiners.fillArray(Double.NaN, nF);					
-						specEntry.fitUncertaintyPower = OneLiners.fillArray(Double.NaN, nF);
-						specEntry.fitRMSError = OneLiners.fillArray(Double.NaN, nF);
+						specEntry.fitAmplitude = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitUncertaintyAmpltiude = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitX0 = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitUncertaintyX0 = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitSlope = Mat.fillArray(Double.NaN, nF);
+						//specEntry.fitUncertaintySlope = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitY0 = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitUncertaintyY0 = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitSigma = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitUncertaintySigma = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitPower = Mat.fillArray(Double.NaN, nF);					
+						specEntry.fitUncertaintyPower = Mat.fillArray(Double.NaN, nF);
+						specEntry.fitRMSError = Mat.fillArray(Double.NaN, nF);
 	
 						specEntry.inferredQuantities = new HashMap<String, double[]>();
 					}
@@ -583,7 +585,7 @@ public class FastSpecProcessor extends ImgPipe implements ImgSink, ConfigurableB
 			int nL = (img == null) ? -1 : (config.wavelenIsY ? img.getHeight() : img.getWidth());
 			int nCh = (img == null) ? -1 : (config.wavelenIsY ? img.getWidth() : img.getHeight());
 			if (o != null)
-				o = OneLiners.fixWeirdContainers(o, true);
+				o = Mat.fixWeirdContainers(o, true);
 
 			if (o == null || !o.getClass().isArray()
 					|| (nL > 0 && Array.getLength(o) != nL && Array.getLength(o) != nCh)) {
@@ -592,7 +594,7 @@ public class FastSpecProcessor extends ImgPipe implements ImgSink, ConfigurableB
 			}
 			// wavelength metadata which is wavelength at each pixel
 
-			o = OneLiners.fixWeirdContainers(o, true);
+			o = Mat.fixWeirdContainers(o, true);
 			if (o instanceof float[]) {
 				o = DataConvertPureJava.convert1DArray(o, new double[((float[]) o).length]);
 			}
@@ -1415,19 +1417,19 @@ public class FastSpecProcessor extends ImgPipe implements ImgSink, ConfigurableB
 			throw new RuntimeException("Aborted in matrix inverse lock wait");						
 		}
 		
-		double det = Mat.det(hessMat);
+		double det = seed.matrix.Mat.det(hessMat);
 		if(!Double.isFinite(det)){
 			Logger.getLogger(this.getClass().getName()).fine("Non finite determinant in uncertainty matrix");
 			return null;
 		}
 		
 		if(config.minInvCovarianceEigenvalue > 0)
-			hessMat = (DenseMatrix)Mat.makeSPD(hessMat, config.minInvCovarianceEigenvalue); 
+			hessMat = (DenseMatrix)seed.matrix.Mat.makeSPD(hessMat, config.minInvCovarianceEigenvalue); 
 			
-		Matrix covMat = Mat.inv(hessMat);
+		Matrix covMat = seed.matrix.Mat.inv(hessMat);
 		
 		//covMat = (DenseMatrix)Mat.makeSPD(covMat, 1e-5); 
-		if(Double.isFinite(Mat.det(covMat)))
+		if(Double.isFinite(seed.matrix.Mat.det(covMat)))
 			return covMat.toArray();
 			
 		Logger.getLogger(this.getClass().getName()).warning("Failed to invert covariance matrix for frame "+iF+" of " + entry0.id + ". Using conditional uncertainty");
@@ -1695,7 +1697,7 @@ public class FastSpecProcessor extends ImgPipe implements ImgSink, ConfigurableB
 		double baselineNoiseSigma = FastMath
 				.sqrt(sumY2 / (2 * nBaseLineAvg) - FastMath.pow2(sumY / (2 * nBaseLineAvg)));
 		//baselineNoiseSigma = 100;
-		frameD.error = OneLiners.fillArray(baselineNoiseSigma, nP);
+		frameD.error = Mat.fillArray(baselineNoiseSigma, nP);
 		
 		for(int i=0; i < frameD.data.length; i++){
 			if(frameD.data[i] > config.saturationLevel)
@@ -2111,7 +2113,7 @@ public class FastSpecProcessor extends ImgPipe implements ImgSink, ConfigurableB
 			// make vaguely readable
 			json = json.replaceAll("},", "},\n");
 
-			OneLiners.TextToFile(fileName, json);
+			OneLiners.textToFile(fileName, json);
 			lastLoadedConfig = id;
 		}
 	}
diff --git a/src/imageProc/proc/fastSpec/swt/FastSpecGraphSWTPanel.java b/src/imageProc/proc/fastSpec/swt/FastSpecGraphSWTPanel.java
index 166c1ca0390709c03ce7a565c255a739d88a9889..621aac514467bd4123ad2bf89ad74d3f56aba0f1 100644
--- a/src/imageProc/proc/fastSpec/swt/FastSpecGraphSWTPanel.java
+++ b/src/imageProc/proc/fastSpec/swt/FastSpecGraphSWTPanel.java
@@ -34,6 +34,10 @@ import imageProc.proc.fastSpec.FastSpecProcessor;
 import imageProc.proc.fastSpec.FastSpecProcessor.FrameData;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class FastSpecGraphSWTPanel {
 	private static String[] basicPlotTypes = new String[] { "Single Frame Fit", "Intensity vs time", "Sigma vs time", "Power vs time" , "x0 vs time", "y0 vs time", "slope vs time", "RMS error vs time" };
@@ -186,10 +190,10 @@ public class FastSpecGraphSWTPanel {
 			Series series = seriesList.get(i);
 			
 			if(binary) {
-				BinaryMatrixFile.mustWrite(System.getProperty("java.io.tmpdir") + "/FastSpecProcessor/"+ ((series.name() != null) ? series.name() : i) + ".bin",
+				Mat.mustWriteBinary(System.getProperty("java.io.tmpdir") + "/FastSpecProcessor/"+ ((series.name() != null) ? series.name() : i) + ".bin",
 						new double[][]{ series.x, series.data }, true);
 			}else {
-				AsciiMatrixFile.mustWrite(System.getProperty("java.io.tmpdir") + "/FastSpecProcessor/"+ ((series.name() != null) ? series.name() : i) + ".txt",
+				Mat.mustWriteAscii(System.getProperty("java.io.tmpdir") + "/FastSpecProcessor/"+ ((series.name() != null) ? series.name() : i) + ".txt",
 						new double[][]{ series.x, series.data }, true);
 				
 			}
@@ -385,7 +389,7 @@ public class FastSpecGraphSWTPanel {
 			if(d == null)
 				return;
 
-			double x[] = (xAxis != null) ? xAxis : OneLiners.linSpace(0,d.y.length - 1, 1.0);
+			double x[] = (xAxis != null) ? xAxis : Mat.linspace(0,d.y.length - 1, 1.0);
 			
 			//strip NaNs
 			int n=0;
@@ -413,22 +417,22 @@ public class FastSpecGraphSWTPanel {
 			seriesList.add(s);
 
 			if(Double.isFinite(d.yMin))
-				seriesList.add(new Series("min", x2, OneLiners.fillArray(d.yMin, n)));
+				seriesList.add(new Series("min", x2, Mat.fillArray(d.yMin, n)));
 
 			if(Double.isFinite(d.yMax))
-				seriesList.add(new Series("max", x2, OneLiners.fillArray(d.yMax, n)));
+				seriesList.add(new Series("max", x2, Mat.fillArray(d.yMax, n)));
 
 			if(Double.isFinite(d.yInit))
-				seriesList.add(new Series("init", x2, OneLiners.fillArray(d.yInit, n)));
+				seriesList.add(new Series("init", x2, Mat.fillArray(d.yInit, n)));
 
 			if(Double.isFinite(d.yInit))
-				seriesList.add(new Series("prior-1sig", x2, OneLiners.fillArray(d.yPriorMean - d.yPriorSigma*2.35/2, n)));
+				seriesList.add(new Series("prior-1sig", x2, Mat.fillArray(d.yPriorMean - d.yPriorSigma*2.35/2, n)));
 
 			if(Double.isFinite(d.yInit))
-				seriesList.add(new Series("prior0", x2, OneLiners.fillArray(d.yInit, n)));
+				seriesList.add(new Series("prior0", x2, Mat.fillArray(d.yInit, n)));
 
 			if(Double.isFinite(d.yInit))
-				seriesList.add(new Series("prior+1sig", x2, OneLiners.fillArray(d.yPriorMean + d.yPriorSigma*2.35/2, n)));
+				seriesList.add(new Series("prior+1sig", x2, Mat.fillArray(d.yPriorMean + d.yPriorSigma*2.35/2, n)));
 		}
 
 		graph.setData(seriesList);
diff --git a/src/imageProc/proc/fastSpec/swt/FastSpecSWTController.java b/src/imageProc/proc/fastSpec/swt/FastSpecSWTController.java
index 879076719569562b5f4823e40a64e0b9d17ee4b9..fba37586da00e0e39753fdfff451ef7b167a2f97 100644
--- a/src/imageProc/proc/fastSpec/swt/FastSpecSWTController.java
+++ b/src/imageProc/proc/fastSpec/swt/FastSpecSWTController.java
@@ -70,6 +70,10 @@ import imageProc.proc.fastSpec.FastSpecConfig.Optimiser;
 import imageProc.proc.fastSpec.FastSpecProcessor.FrameData;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class FastSpecSWTController implements SWTControllerInfoDraw, ImagePipeControllerROISettable {
 	
@@ -835,9 +839,9 @@ public class FastSpecSWTController implements SWTControllerInfoDraw, ImagePipeCo
 					f = FastSpecEntry.class.getDeclaredField(colName);
 									
 					if(f.getType() == int.class){
-						f.set(point, OneLiners.mustParseInt(text));
+						f.set(point, Algorithms.mustParseInt(text));
 					}else if(f.getType() == double.class){
-						f.set(point, OneLiners.mustParseDouble(text));
+						f.set(point, Algorithms.mustParseDouble(text));
 					}else if(f.getType() == String.class){
 						if(text != null && (text.length() == 0 || text.equals("null") || text.equals("(null)")))
 							text = null;
diff --git a/src/imageProc/proc/fastSpec/swt/FastSpecSettingsSWTPanel.java b/src/imageProc/proc/fastSpec/swt/FastSpecSettingsSWTPanel.java
index 13367194572e8c51934f990cc10ee72d5bd52718..110c1a4982d304c8d339928df52c810576cdd4a0 100644
--- a/src/imageProc/proc/fastSpec/swt/FastSpecSettingsSWTPanel.java
+++ b/src/imageProc/proc/fastSpec/swt/FastSpecSettingsSWTPanel.java
@@ -29,6 +29,10 @@ import imageProc.proc.fastSpec.FastSpecConfig;
 import imageProc.proc.fastSpec.FastSpecEntry;
 import imageProc.proc.fastSpec.FastSpecProcessor;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import imageProc.proc.fastSpec.FastSpecConfig.AmpFitMode;
 import imageProc.proc.fastSpec.FastSpecConfig.InitMode;
 import imageProc.proc.fastSpec.FastSpecConfig.Optimiser;
@@ -111,14 +115,14 @@ public class FastSpecSettingsSWTPanel {
 		Label lIT = new Label(settingsTabComp, SWT.NONE); lIT.setText("Init: ");
 		initModeCombo = new Combo(settingsTabComp, SWT.DROP_DOWN | SWT.READ_ONLY);
 		initModeCombo.setToolTipText("How to set initial values");		
-		initModeCombo.setItems(OneLiners.toStringArray(InitMode.values()));		
+		initModeCombo.setItems(Mat.toStringArray(InitMode.values()));		
 		initModeCombo.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false, 1, 1));
 		initModeCombo.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { settingsChangedEvent(event); } });
 
 		Label lAM = new Label(settingsTabComp, SWT.NONE); lAM.setText("Amp: ");
 		amplitudeModeCombo = new Combo(settingsTabComp, SWT.DROP_DOWN | SWT.READ_ONLY);
 		amplitudeModeCombo.setToolTipText("Only fit amplitudes (first, or at all), use fixed intial values of all other parameters.");		
-		amplitudeModeCombo.setItems(OneLiners.toStringArray(AmpFitMode.values()));
+		amplitudeModeCombo.setItems(Mat.toStringArray(AmpFitMode.values()));
 		amplitudeModeCombo.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 3, 1));
 		amplitudeModeCombo.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { settingsChangedEvent(event); } });
 		
diff --git a/src/imageProc/proc/fft/FFTProcessor.java b/src/imageProc/proc/fft/FFTProcessor.java
index 97d370ad938deb89fd4e5e62c9c7fae1aa5379c5..f7417615519230ef42368cae2ef3f749600ff276 100644
--- a/src/imageProc/proc/fft/FFTProcessor.java
+++ b/src/imageProc/proc/fft/FFTProcessor.java
@@ -25,6 +25,10 @@ import imageProc.core.MetaDataMap;
 import imageProc.database.gmds.GMDSUtil;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 /** FFT Processor
@@ -142,7 +146,7 @@ public class FFTProcessor extends ImgProcPipeMultithread implements Configurable
 		
 		if(id.startsWith("gmds")){
 			String parts[] = id.split("/");
-			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 		}else if(id.startsWith("jsonfile:")){
 			loadConfigJSON(id.substring(9));
 		}else {
@@ -188,7 +192,7 @@ public class FFTProcessor extends ImgProcPipeMultithread implements Configurable
 	public void saveConfig(String id){
 		if(id.startsWith("gmds")){
 			String parts[] = id.split("/");
-			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 			lastLoadedConfig = id;
 		}else if(id.startsWith("jsonfile:")){
 			saveConfigJSON(id.substring(9));
@@ -203,7 +207,7 @@ public class FFTProcessor extends ImgProcPipeMultithread implements Configurable
 		jobj.add("cropY", new JsonPrimitive(cropY));
 		jobj.add("autoCalc", new JsonPrimitive(autoCalc));
 			
-		OneLiners.TextToFile(fileName, jobj.toString());
+		OneLiners.textToFile(fileName, jobj.toString());
 	}
 	
 	public void saveConfigGMDS(String experiment, int pulse){
diff --git a/src/imageProc/proc/imgFit/CubicMaskedImageFitter.java b/src/imageProc/proc/imgFit/CubicMaskedImageFitter.java
index 1b47bc1da1b4b24cf186695100c29e6296b30515..3abf67e55e1fb794b06103d04a3a4c28048998c0 100644
--- a/src/imageProc/proc/imgFit/CubicMaskedImageFitter.java
+++ b/src/imageProc/proc/imgFit/CubicMaskedImageFitter.java
@@ -6,6 +6,10 @@ import algorithmrepository.CubicInterpolation2D;
 import imageProc.core.Img;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import seed.digeom.FunctionND;
 import seed.digeom.IDomain;
 import seed.digeom.RectangularDomain;
@@ -29,10 +33,10 @@ public class CubicMaskedImageFitter extends FunctionND {
 		if(nPX != this.nPX || nPY != this.nPY){
 			this.nPX = nPX;
 			this.nPY = nPY;
-			double x[] = OneLiners.linSpace(0, 1, nPX);
-			double y[] = OneLiners.linSpace(0, 1, nPY);
+			double x[] = Mat.linspace(0, 1, nPX);
+			double y[] = Mat.linspace(0, 1, nPY);
 			interp = new CubicInterpolation2D(x, y, new double[nPX][nPY]);
-			setP(OneLiners.fillArray(1.0, nPX*nPY));
+			setP(Mat.fillArray(1.0, nPX*nPY));
 		}
 		
 	}
@@ -81,7 +85,7 @@ public class CubicMaskedImageFitter extends FunctionND {
 		}
 		if(n == 0){
 			System.err.println("CubicMaskedImageFit: Entire input image is NaN");
-			return OneLiners.fillArray(Double.NaN, nPX * nPY);
+			return Mat.fillArray(Double.NaN, nPX * nPY);
 		}		
 		fullAvg /= n;
 		
@@ -118,7 +122,7 @@ public class CubicMaskedImageFitter extends FunctionND {
 			}				
 		}
 		
-		return noData ? OneLiners.fillArray(Double.NaN, p.length) : p;
+		return noData ? Mat.fillArray(Double.NaN, p.length) : p;
 	}
 	
 	private double[] doFit(double initP[]){
@@ -163,7 +167,7 @@ public class CubicMaskedImageFitter extends FunctionND {
 	public void setMask(boolean[][] mask) { this.mask = mask; }
 	
 	@Override
-	public IDomain getDomain() { return new RectangularDomain(OneLiners.fillArray(minP, nPX*nPY), OneLiners.fillArray(maxP, nPX*nPY)); }
+	public IDomain getDomain() { return new RectangularDomain(Mat.fillArray(minP, nPX*nPY), Mat.fillArray(maxP, nPX*nPY)); }
 	
 	public double evalFittedImage(int iX, int iY) {  
 		return interp.eval((double)iX / imgWidth, (double)iY / imgHeight);
diff --git a/src/imageProc/proc/seriesAvg/SeriesProcessor.java b/src/imageProc/proc/seriesAvg/SeriesProcessor.java
index 5b42fff13102eaf32a0a43999c9d815ae997ef9c..52315b10a6eccd166b3d9ac5f4ccb1f662744aec 100644
--- a/src/imageProc/proc/seriesAvg/SeriesProcessor.java
+++ b/src/imageProc/proc/seriesAvg/SeriesProcessor.java
@@ -50,6 +50,10 @@ import imageProc.proc.seriesAvg.SeriesProcessorConfig.SmearCorrectionMode;
 import net.jafama.FastMath;
 import mds.AugShotfileFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.aug.AUGSignal;
 import signals.gmds.GMDSSignal;
 
@@ -249,7 +253,7 @@ public class SeriesProcessor extends ImgProcPipeMultithread implements Configura
 	    String backgroundScaleFilename = (String)getSeriesMetaData("SeriesProc/backgroundScale/fileName");
 	    if(backgroundScaleFilename != null) {
 	    		//"/home/specgui/backgroundScale.txt";
-	    	double d[][] = OneLiners.transpose(AsciiMatrixFile.mustLoad(backgroundScaleFilename));
+	    	double d[][] = Mat.transpose(Mat.mustLoadAscii(backgroundScaleFilename));
 	    	setSeriesMetaData("SeriesProc/backgroundScale/timetrace", d, false);
 	    	setSeriesMetaData("SeriesProc/backgroundScale/factor", 0.04, false);
 	    }else {
@@ -310,7 +314,7 @@ public class SeriesProcessor extends ImgProcPipeMultithread implements Configura
  		double backgroundScale[][] = (double[][])getSeriesMetaData("SeriesProc/backgroundScale/timetrace");
 	    Double backgroundScaleFactor = (Double)getSeriesMetaData("SeriesProc/backgroundScale/factor");
 	    Interpolation1D backgroundScaleInterp = null;
-	    double timeFromT1[] = (double[])OneLiners.fixWeirdContainers(getSeriesMetaData("/inshot/timeFromT1"), true);
+	    double timeFromT1[] = (double[])Mat.fixWeirdContainers(getSeriesMetaData("/inshot/timeFromT1"), true);
 	    if(backgroundScale != null) {
 	    	backgroundScaleInterp = new algorithmrepository.Interpolation1D(backgroundScale[0], backgroundScale[1], InterpolationMode.LINEAR, ExtrapolationMode.CONSTANT_END);	    	
 	    }
@@ -749,7 +753,7 @@ public class SeriesProcessor extends ImgProcPipeMultithread implements Configura
 	public void saveConfig(String id){
 		String parts[] = id.split("/");
 		if(parts[0].equals("gmds")){
-			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 			lastLoadedConfig = id;
 		}else if(id.startsWith("jsonfile:")){
 			saveConfigJSON(id.substring(9));
@@ -770,7 +774,7 @@ public class SeriesProcessor extends ImgProcPipeMultithread implements Configura
 		((JsonObject) jobj).add("nThreads", new JsonPrimitive(getNumThreads()));
 		((JsonObject) jobj).add("autoCalc", new JsonPrimitive(autoCalc));
 		
-		OneLiners.TextToFile(fileName, jobj.toString());
+		OneLiners.textToFile(fileName, jobj.toString());
 	}
 	
 	public void saveConfigGMDS(String experiment, int pulse){		
@@ -814,7 +818,7 @@ public class SeriesProcessor extends ImgProcPipeMultithread implements Configura
 	public void loadConfig(String id){
 		String parts[] = id.split("/");
 		if(parts[0].equals("gmds")){
-			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 		}else if(id.startsWith("jsonfile:")){
 			loadConfigJSON(id.substring(9));
 		}else {
@@ -1007,9 +1011,9 @@ public class SeriesProcessor extends ImgProcPipeMultithread implements Configura
 			//generate frame by frame exposure time where SeriesProc was summing frames
 			Object o = this.getSeriesMetaData("/SeriesProc/numInputImagesUsed");
 			if(o != null && camInfo != null){
-				boolean isSum[] = (boolean[])OneLiners.fixWeirdContainers(this.getSeriesMetaData("/SeriesProc/isIntegrated"), true);
+				boolean isSum[] = (boolean[])Mat.fixWeirdContainers(this.getSeriesMetaData("/SeriesProc/isIntegrated"), true);
 							
-				int nImgs[] = (int[])OneLiners.fixWeirdContainers(o, true);
+				int nImgs[] = (int[])Mat.fixWeirdContainers(o, true);
 				double[] expTime = new double[nImgs.length];
 				for(int i=0; i < nImgs.length; i++)
 					expTime[i] = camInfo.exposureTime * (isSum[i] ? nImgs[i] : 1);
diff --git a/src/imageProc/proc/seriesAvg/SeriesSWTController.java b/src/imageProc/proc/seriesAvg/SeriesSWTController.java
index e0a60a259a4c1b3056c410186ce0f5a911f913db..7a495e8daf9e594de4ead9b044465a6f0e336402 100644
--- a/src/imageProc/proc/seriesAvg/SeriesSWTController.java
+++ b/src/imageProc/proc/seriesAvg/SeriesSWTController.java
@@ -37,6 +37,10 @@ import imageProc.core.swt.SWTControllerInfoDraw;
 import imageProc.core.swt.SWTSettingsControl;
 import imageProc.proc.seriesAvg.SeriesProcessorConfig.SmearCorrectionMode;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.RandomManager;
 
 /** The table directly relfects the config data in the processor's map
@@ -124,7 +128,7 @@ public class SeriesSWTController extends ImgProcPipeSWTController implements SWT
 		smearCorrectionInterpolationRowsTextbox.addListener(SWT.FocusOut, new Listener() { @Override public void handleEvent(Event event) { otherSettingsEvent(event); } });
 		
 		smearCorrectionModeCombo = new Combo(swtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);		
-		smearCorrectionModeCombo.setItems(OneLiners.toStringArray(SmearCorrectionMode.values()));	
+		smearCorrectionModeCombo.setItems(Mat.toStringArray(SmearCorrectionMode.values()));	
 		smearCorrectionModeCombo.setToolTipText("Smear correction mode.");		
 		smearCorrectionModeCombo.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 0));
 		smearCorrectionModeCombo.addListener(SWT.FocusOut, new Listener() { @Override public void handleEvent(Event event) { otherSettingsEvent(event); } });
@@ -169,9 +173,9 @@ public class SeriesSWTController extends ImgProcPipeSWTController implements SWT
 
 	private void otherSettingsEvent(Event e){
 		SeriesProcessorConfig config = proc.getConfig();
-		config.timebaseOffset = OneLiners.mustParseDouble(timebaseOffset.getText());
+		config.timebaseOffset = Algorithms.mustParseDouble(timebaseOffset.getText());
 		config.createBackgroundFields = createBackgroundFieldsCheckbox.getSelection();
-		config.smearCoeff = OneLiners.mustParseDouble(smearCorrectionCoefficientTextbox.getText());
+		config.smearCoeff = Algorithms.mustParseDouble(smearCorrectionCoefficientTextbox.getText());
 		config.smearMode = SmearCorrectionMode.valueOf(smearCorrectionModeCombo.getText());
 		config.smearInterpolationRows = (new Gson()).fromJson(smearCorrectionInterpolationRowsTextbox.getText(), int[].class);
 	}
@@ -367,7 +371,7 @@ public class SeriesSWTController extends ImgProcPipeSWTController implements SWT
 			break;
 
 		case COL_IN0:
-			cfg.inIdx0 = OneLiners.mustParseInt(text);
+			cfg.inIdx0 = Algorithms.mustParseInt(text);
 			item.setText(column, Integer.toString(cfg.inIdx0)); 
 			break;
 
@@ -382,24 +386,24 @@ public class SeriesSWTController extends ImgProcPipeSWTController implements SWT
 			break;
 			
 		case COL_IN1:
-			cfg.inIdx1 = OneLiners.mustParseInt(text);
+			cfg.inIdx1 = Algorithms.mustParseInt(text);
 			item.setText(column, Integer.toString(cfg.inIdx1)); 
 			break;
 		
 		case COL_STEP:
-			cfg.inIdxStep = OneLiners.mustParseInt(text);
+			cfg.inIdxStep = Algorithms.mustParseInt(text);
 			if(cfg.inIdxStep < 1)
 				cfg.inIdxStep = 1;
 			item.setText(column, Integer.toString(cfg.inIdxStep)); 
 			break;
 			
 		case COL_SIGMA:
-			cfg.timeSmoothSigma = OneLiners.mustParseDouble(text);
+			cfg.timeSmoothSigma = Algorithms.mustParseDouble(text);
 			item.setText(column, fmt.format(cfg.timeSmoothSigma));
 			break;
 			
 		case COL_INTERLACE:
-			cfg.interlaced = OneLiners.mustParseBoolean(text);
+			cfg.interlaced = Algorithms.mustParseBoolean(text);
 			item.setText(column, Boolean.toString(cfg.interlaced));
 			break;
 		case COL_RAD_REMOVAL:
@@ -407,7 +411,7 @@ public class SeriesSWTController extends ImgProcPipeSWTController implements SWT
 			item.setText(column, (cfg.radRemoval >= 0 && cfg.radRemoval < ConfigEntry.radModes.length) ? ConfigEntry.radModes[cfg.radRemoval] : "??");
 			break;
 		case COL_THRESHOLD:
-			cfg.spikeThreshold = OneLiners.mustParseDouble(text);
+			cfg.spikeThreshold = Algorithms.mustParseDouble(text);
 			item.setText(column, fmt.format(cfg.timeSmoothSigma));
 			break;
 		case COL_OUT0:
diff --git a/src/imageProc/proc/softwareBinning/SoftwareROIsProcessor.java b/src/imageProc/proc/softwareBinning/SoftwareROIsProcessor.java
index 07aee2071842a70a117dcc8ce29e084603133800..2da8d3ea068cf0fdb73777948ccf3337e8c42e8b 100644
--- a/src/imageProc/proc/softwareBinning/SoftwareROIsProcessor.java
+++ b/src/imageProc/proc/softwareBinning/SoftwareROIsProcessor.java
@@ -41,6 +41,10 @@ import imageProc.sources.capture.andorV2.AndorV2Config;
 import net.jafama.FastMath;
 import mds.AugShotfileFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.aug.AUGSignal;
 import signals.gmds.GMDSSignal;
 
@@ -317,7 +321,7 @@ public class SoftwareROIsProcessor extends ImgProcPipeMultithread implements Con
 
 		String json = gson.toJson(config);
 		
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/proc/softwareBinning/SoftwareROIsSWTController.java b/src/imageProc/proc/softwareBinning/SoftwareROIsSWTController.java
index 46b3049c501c00bef25c2cbaa0fe6ec6e8065589..1d3f836670218e38263d5e7838e2b408bf7132b2 100644
--- a/src/imageProc/proc/softwareBinning/SoftwareROIsSWTController.java
+++ b/src/imageProc/proc/softwareBinning/SoftwareROIsSWTController.java
@@ -54,6 +54,10 @@ import imageProc.database.json.JSONFileSettingsControl;
 import imageProc.proc.softwareBinning.SoftwareROIsConfig.SoftwareROI;
 import imageProc.sources.capture.picam.PicamConfig;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import picamJNI.PICamROIs.PICamROI;
 
 /** The table directly relfects the config data in the processor's map
@@ -230,16 +234,16 @@ public class SoftwareROIsSWTController extends ImgProcPipeSWTController implemen
 					item.setText(column, text);
 	
 					break;
-				case 2: roi.enabled = !OneLiners.mustParseBoolean(text); item.setText(2, roi.enabled ? "Y" : ""); break;					
+				case 2: roi.enabled = !Algorithms.mustParseBoolean(text); item.setText(2, roi.enabled ? "Y" : ""); break;					
 	
-				case 3: roi.x = OneLiners.mustParseInt(text); item.setText(3, Integer.toString(roi.x)); break;
-				case 4: roi.width = OneLiners.mustParseInt(text); item.setText(4, Integer.toString(roi.width)); break;
-				case 5: roi.x_binning = OneLiners.mustParseInt(text); item.setText(5, Integer.toString(roi.x_binning)); break;
+				case 3: roi.x = Algorithms.mustParseInt(text); item.setText(3, Integer.toString(roi.x)); break;
+				case 4: roi.width = Algorithms.mustParseInt(text); item.setText(4, Integer.toString(roi.width)); break;
+				case 5: roi.x_binning = Algorithms.mustParseInt(text); item.setText(5, Integer.toString(roi.x_binning)); break;
 				
-				case 6: roi.y = OneLiners.mustParseInt(text); item.setText(6, Integer.toString(roi.y)); break;
-				case 7: roi.height = OneLiners.mustParseInt(text); item.setText(7, Integer.toString(roi.height)); break;
-				case 8: roi.y_binning = OneLiners.mustParseInt(text); item.setText(8, Integer.toString(roi.y_binning)); break;
-				case 9: roi.tilt = OneLiners.mustParseDouble(text); item.setText(9, Double.toString(roi.tilt)); break;
+				case 6: roi.y = Algorithms.mustParseInt(text); item.setText(6, Integer.toString(roi.y)); break;
+				case 7: roi.height = Algorithms.mustParseInt(text); item.setText(7, Integer.toString(roi.height)); break;
+				case 8: roi.y_binning = Algorithms.mustParseInt(text); item.setText(8, Integer.toString(roi.y_binning)); break;
+				case 9: roi.tilt = Algorithms.mustParseDouble(text); item.setText(9, Double.toString(roi.tilt)); break;
 				case 10:
 					Gson gson = new Gson();
 					int[] cols = gson.fromJson(text, int[].class);
diff --git a/src/imageProc/proc/specCal2D/SpecCalFitCubic.java b/src/imageProc/proc/specCal2D/SpecCalFitCubic.java
index e2ee2fbfe3c42b56d99bfe181bfbe742c1827243..da09bf38b62e66c0ef609cf89ebf8ec58c8c1e3f 100644
--- a/src/imageProc/proc/specCal2D/SpecCalFitCubic.java
+++ b/src/imageProc/proc/specCal2D/SpecCalFitCubic.java
@@ -6,9 +6,10 @@ import java.util.Map;
 import descriptors.gmds.GMDSSignalDesc;
 import fusionDefs.transform.PhysicalROIGeometry;
 import oneLiners.OneLiners;
-import net.jafama.FastMath;
+import algorithmrepository.Mat;
 import algorithmrepository.Algorithms;
 import algorithmrepository.CubicInterpolation2D;
+import net.jafama.FastMath;
 import seed.digeom.Function;
 import seed.digeom.FunctionND;
 import seed.digeom.IDomain;
@@ -59,7 +60,7 @@ public class SpecCalFitCubic extends SpecCalFit {
 		GMDSSignal sig = (GMDSSignal)gmds.getSig(sigDesc);
 		linXYtoLS = (double[][])sig.getData();
 
-		linLStoXY = Algorithms.inv3x3(linXYtoLS);		
+		linLStoXY = Mat.inv3x3(linXYtoLS);		
 	}
 
 	public void loadKnots(GMDSFetcher gmds, String experiment, int pulse){
@@ -87,7 +88,7 @@ public class SpecCalFitCubic extends SpecCalFit {
 	
 	public void loadLinear(Map<String, Object> metaData){
 		linXYtoLS = (double[][])metaData.get("/SpecCal/linearXYtoLL");
-		linLStoXY = Algorithms.inv3x3(linXYtoLS);		
+		linLStoXY = Mat.inv3x3(linXYtoLS);		
 	}
 	
 	public void loadKnots(Map<String, Object> metaData){
@@ -176,8 +177,8 @@ public class SpecCalFitCubic extends SpecCalFit {
 			
 	public void initCubic(int nWavelen, int nSpatial) {
 		if(pWavelen == null || nWavelen != pWavelen.length || nSpatial != pSpatial.length){			
-			pWavelen = OneLiners.linSpace(minWavelen, maxWavelen, nWavelen);
-			pSpatial = OneLiners.linSpace(minSpatial, maxSpatial, nSpatial);
+			pWavelen = Mat.linspace(minWavelen, maxWavelen, nWavelen);
+			pSpatial = Mat.linspace(minSpatial, maxSpatial, nSpatial);
 			interpX = new CubicInterpolation2D(pWavelen, pSpatial, new double[nWavelen][nSpatial]);
 			interpY = new CubicInterpolation2D(pWavelen, pSpatial, new double[nWavelen][nSpatial]);			
 		}		
@@ -237,9 +238,9 @@ public class SpecCalFitCubic extends SpecCalFit {
 			}
 			
 			// calc initial linear trasnform
-			double invX[][] = Algorithms.inv3x3(linPointsXY);
-			linXYtoLS = Algorithms.mul3x3(linPointsLL, invX);
-			linLStoXY = Algorithms.inv3x3(linXYtoLS);
+			double invX[][] = Mat.inv3x3(linPointsXY);
+			linXYtoLS = Mat.mul3x3(linPointsLL, invX);
+			linLStoXY = Mat.inv3x3(linXYtoLS);
 			
 	}
 
diff --git a/src/imageProc/proc/specCal2D/SpecCalFitter.java b/src/imageProc/proc/specCal2D/SpecCalFitter.java
index 1a03be62c3fa8443f81a0cead9e433ef9a151f10..13e93a59ea79324de13735ceda5bd44c23e93155 100644
--- a/src/imageProc/proc/specCal2D/SpecCalFitter.java
+++ b/src/imageProc/proc/specCal2D/SpecCalFitter.java
@@ -7,6 +7,10 @@ import algorithmrepository.Algorithms;
 import binaryMatrixFile.BinaryMatrixFile;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import seed.digeom.FunctionND;
 import seed.digeom.IDomain;
 import seed.digeom.RectangularDomain;
@@ -57,21 +61,21 @@ public class SpecCalFitter extends FunctionND {
 		double minB = specCal.getMinSpatial();
 		double maxB = specCal.getMaxSpatial();
 		
-		double mg[][][] = Algorithms.meshgrid(OneLiners.linSpace(minA, maxA, 500), OneLiners.linSpace(minB, maxB, 500));
-		double aaL[] = OneLiners.flatten(mg[0]);
-		double bbL[] = OneLiners.flatten(mg[1]);
+		double mg[][][] = Mat.meshgrid(Mat.linspace(minA, maxA, 500), Mat.linspace(minB, maxB, 500));
+		double aaL[] = Mat.flatten(mg[0]);
+		double bbL[] = Mat.flatten(mg[1]);
 		
 		double linXY[][] = specCal.lsToXYLinear(aaL, bbL); 
 		
-		BinaryMatrixFile.mustWrite("/tmp/Xl.bin", OneLiners.unflatten(linXY[0],500,500), false);
-		BinaryMatrixFile.mustWrite("/tmp/Yl.bin", OneLiners.unflatten(linXY[1],500,500), false);
+		Mat.mustWriteBinary("/tmp/Xl.bin", Mat.unflatten(linXY[0],500,500), false);
+		Mat.mustWriteBinary("/tmp/Yl.bin", Mat.unflatten(linXY[1],500,500), false);
 		
 		if(specCal.isCubicValid()){
 			double xyL[][] = specCal.lsToXY(aaL, bbL);
-			BinaryMatrixFile.mustWrite("/tmp/X.bin", OneLiners.unflatten(xyL[0],500,500), false);
-			BinaryMatrixFile.mustWrite("/tmp/Y.bin", OneLiners.unflatten(xyL[1],500,500), false);
-			BinaryMatrixFile.mustWrite("/tmp/Xk.bin", specCal.getKnotValsX(), false);
-			BinaryMatrixFile.mustWrite("/tmp/Yk.bin", specCal.getKnotValsY(), false);
+			Mat.mustWriteBinary("/tmp/X.bin", Mat.unflatten(xyL[0],500,500), false);
+			Mat.mustWriteBinary("/tmp/Y.bin", Mat.unflatten(xyL[1],500,500), false);
+			Mat.mustWriteBinary("/tmp/Xk.bin", specCal.getKnotValsX(), false);
+			Mat.mustWriteBinary("/tmp/Yk.bin", specCal.getKnotValsY(), false);
 		}		
 	}
 	
@@ -115,7 +119,7 @@ public class SpecCalFitter extends FunctionND {
 	}
 
 	@Override
-	public IDomain getDomain() { return new RectangularDomain(OneLiners.fillArray(minP, nWavelen*nSpatial*2), OneLiners.fillArray(maxP, nWavelen*nSpatial*2)); }
+	public IDomain getDomain() { return new RectangularDomain(Mat.fillArray(minP, nWavelen*nSpatial*2), Mat.fillArray(maxP, nWavelen*nSpatial*2)); }
 	
 	private double[] getP(){
 		double gPX[][] = specCal.getKnotValsX();
diff --git a/src/imageProc/proc/specCal2D/SpecCalProcessor.java b/src/imageProc/proc/specCal2D/SpecCalProcessor.java
index 00301a71201fa172367a6fe0c2813ac64ab5c32b..ba6ba9540e3af58b111ce9e16497a7c4657274e7 100644
--- a/src/imageProc/proc/specCal2D/SpecCalProcessor.java
+++ b/src/imageProc/proc/specCal2D/SpecCalProcessor.java
@@ -25,6 +25,10 @@ import imageProc.database.gmds.GMDSUtil;
 import imageProc.graph.GraphUtilProcessor;
 import imageProc.graph.shapeFit.FuncFitter;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 /** SpecCal processor.
@@ -290,8 +294,8 @@ public class SpecCalProcessor extends ImgProcPipeMultithread implements Configur
 		//ConversionGrid: 
 		// these will be out grid to the outputImageCCD{X/Y} interpolators
 		//  they are fractional position in the transformed image space (oX,oY)
-		double cgX[] = OneLiners.linSpace(0.0, 1.0, outputImageCCDConversionGridSizeX);
-		double cgY[] = OneLiners.linSpace(0.0, 1.0, outputImageCCDConversionGridSizeY);
+		double cgX[] = Mat.linspace(0.0, 1.0, outputImageCCDConversionGridSizeX);
+		double cgY[] = Mat.linspace(0.0, 1.0, outputImageCCDConversionGridSizeY);
 		
 		//linear output coords on conversion grid
 		double cgA[] = new double[cgX.length];
@@ -493,7 +497,7 @@ public class SpecCalProcessor extends ImgProcPipeMultithread implements Configur
 	public void saveConfig(String id){
 		String parts[] = id.split("/");
 		if(parts[0].equals("gmds")) {
-			saveConfig(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			saveConfig(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 			lastLoadedConfig = id;
 		}
 	}
@@ -531,7 +535,7 @@ public class SpecCalProcessor extends ImgProcPipeMultithread implements Configur
 	public void loadConfig(String id){
 		String parts[] = id.split("/");
 		if(parts[0].equals("gmds"))
-			loadConfig(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			loadConfig(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 		else
 			throw new RuntimeException("Unknown config type " + id);
 		lastLoadedConfig = id;
diff --git a/src/imageProc/proc/specCal2D/SpecCalSWTController.java b/src/imageProc/proc/specCal2D/SpecCalSWTController.java
index 301c625fd0ef79881681e20fbb34c77e3e082847..91c9b568e35779ec4528dc7e78887e0b9bc6c556 100644
--- a/src/imageProc/proc/specCal2D/SpecCalSWTController.java
+++ b/src/imageProc/proc/specCal2D/SpecCalSWTController.java
@@ -37,6 +37,10 @@ import imageProc.core.swt.ImgProcPipeSWTController;
 import imageProc.core.swt.SWTControllerInfoDraw;
 import imageProc.database.gmds.GMDSPipe;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SpecCalSWTController extends ImgProcPipeSWTController implements SWTControllerInfoDraw, ImagePipeControllerROISettable {
 
@@ -201,10 +205,10 @@ public class SpecCalSWTController extends ImgProcPipeSWTController implements SW
 								cubicNumYSpinner.getSelection());
 		SpecCalFit specCal = proc.getSpecCalFit();
 		specCal.channelsAreRows = channelsAreRowsCheckbox.getSelection();
-		specCal.minWavelen = OneLiners.mustParseDouble(minWavelengthTextbox.getText());
-		specCal.maxWavelen = OneLiners.mustParseDouble(maxChannelTextbox.getText());
-		specCal.minSpatial = OneLiners.mustParseDouble(minChannelTextbox.getText());
-		specCal.maxSpatial = OneLiners.mustParseDouble(maxChannelTextbox.getText());
+		specCal.minWavelen = Algorithms.mustParseDouble(minWavelengthTextbox.getText());
+		specCal.maxWavelen = Algorithms.mustParseDouble(maxChannelTextbox.getText());
+		specCal.minSpatial = Algorithms.mustParseDouble(minChannelTextbox.getText());
+		specCal.maxSpatial = Algorithms.mustParseDouble(maxChannelTextbox.getText());
 		
 	}
 	
@@ -565,7 +569,7 @@ public class SpecCalSWTController extends ImgProcPipeSWTController implements SW
 					if(bestMatchIdx > 0){ 
 						point.mode = bestMatchIdx;
 					}else{//otherwise, fall back to interpreting as a number
-						point.mode = OneLiners.mustParseInt(text);
+						point.mode = Algorithms.mustParseInt(text);
 						
 					}
 					
@@ -578,7 +582,7 @@ public class SpecCalSWTController extends ImgProcPipeSWTController implements SW
 				
 			}else{
 				if(pointName.length() > 0 && point != null){ //can only edit values for existing points
-					double val = OneLiners.mustParseDouble(text);
+					double val = Algorithms.mustParseDouble(text);
 					
 					if(column >= 3 && column <= 4){
 						val /= 1000;
diff --git a/src/imageProc/proc/transform/TransformFitter.java b/src/imageProc/proc/transform/TransformFitter.java
index 5bd8eef0a9deb4efdc3e4a16e44dc28df39da0a7..6f40aa6bcf3d8eeb308aa70da48eacba40e5ed56 100644
--- a/src/imageProc/proc/transform/TransformFitter.java
+++ b/src/imageProc/proc/transform/TransformFitter.java
@@ -11,6 +11,10 @@ import algorithmrepository.Algorithms;
 import binaryMatrixFile.BinaryMatrixFile;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import seed.digeom.FunctionND;
 import seed.digeom.IDomain;
 import seed.digeom.RectangularDomain;
@@ -61,21 +65,21 @@ public class TransformFitter extends FunctionND {
 		double minB = xform.getMinLat();
 		double maxB = xform.getMaxLat();
 		
-		double mg[][][] = Algorithms.meshgrid(OneLiners.linSpace(minA, maxA, 500), OneLiners.linSpace(minB, maxB, 500));
-		double aaL[] = OneLiners.flatten(mg[0]);
-		double bbL[] = OneLiners.flatten(mg[1]);
+		double mg[][][] = Mat.meshgrid(Mat.linspace(minA, maxA, 500), Mat.linspace(minB, maxB, 500));
+		double aaL[] = Mat.flatten(mg[0]);
+		double bbL[] = Mat.flatten(mg[1]);
 		
 		double linXY[][] = xform.latlonToXYLinear(aaL, bbL); 
 		
-		BinaryMatrixFile.mustWrite("/tmp/Xl.bin", OneLiners.unflatten(linXY[0],500,500), false);
-		BinaryMatrixFile.mustWrite("/tmp/Yl.bin", OneLiners.unflatten(linXY[1],500,500), false);
+		Mat.mustWriteBinary("/tmp/Xl.bin", Mat.unflatten(linXY[0],500,500), false);
+		Mat.mustWriteBinary("/tmp/Yl.bin", Mat.unflatten(linXY[1],500,500), false);
 		
 		if(xform.isCubicValid()){
 			double xyL[][] = xform.latlonToXY(aaL, bbL);
-			BinaryMatrixFile.mustWrite("/tmp/X.bin", OneLiners.unflatten(xyL[0],500,500), false);
-			BinaryMatrixFile.mustWrite("/tmp/Y.bin", OneLiners.unflatten(xyL[1],500,500), false);
-			BinaryMatrixFile.mustWrite("/tmp/Xk.bin", xform.getKnotValsX(), false);
-			BinaryMatrixFile.mustWrite("/tmp/Yk.bin", xform.getKnotValsY(), false);
+			Mat.mustWriteBinary("/tmp/X.bin", Mat.unflatten(xyL[0],500,500), false);
+			Mat.mustWriteBinary("/tmp/Y.bin", Mat.unflatten(xyL[1],500,500), false);
+			Mat.mustWriteBinary("/tmp/Xk.bin", xform.getKnotValsX(), false);
+			Mat.mustWriteBinary("/tmp/Yk.bin", xform.getKnotValsY(), false);
 		}		
 	}
 	
@@ -119,7 +123,7 @@ public class TransformFitter extends FunctionND {
 	}
 
 	@Override
-	public IDomain getDomain() { return new RectangularDomain(OneLiners.fillArray(minP, nLon*nLat*2), OneLiners.fillArray(maxP, nLon*nLat*2)); }
+	public IDomain getDomain() { return new RectangularDomain(Mat.fillArray(minP, nLon*nLat*2), Mat.fillArray(maxP, nLon*nLat*2)); }
 	
 	private double[] getP(){
 		double gPX[][] = xform.getKnotValsX();
diff --git a/src/imageProc/proc/transform/TransformProcessor.java b/src/imageProc/proc/transform/TransformProcessor.java
index f9cb7faeaa47d43265959d1d9d5d3da90a713245..64018dad5c5744d7999da80a809ed7ba7d9f4d64 100644
--- a/src/imageProc/proc/transform/TransformProcessor.java
+++ b/src/imageProc/proc/transform/TransformProcessor.java
@@ -42,6 +42,10 @@ import fusionOptics.Util;
 import net.jafama.FastMath;
 import mds.AugShotfileFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.aug.AUGSignal;
 import signals.gmds.GMDSSignal;
 
@@ -360,14 +364,14 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 							FastMath.sin(ll2[0]) * FastMath.cos(ll2[1]),
 							FastMath.sin(ll2[1]),
 						};
-					double posOnLineM[] = OneLiners.plus(viewPos, OneLiners.mul(u, l)); 
+					double posOnLineM[] = Mat.add(viewPos, Mat.mul(u, l)); 
 					System.out.println("\tPosition at "+l+"m from viewPos (Image) = { " + posOnLineM[0] + ", " +posOnLineM[1] + ", " +posOnLineM[2] + "}");
 					u = new double[]{ 
 							FastMath.cos(p.lon) * FastMath.cos(p.lat),
 							FastMath.sin(p.lon) * FastMath.cos(p.lat),
 							FastMath.sin(p.lat),
 						};
-					double posOnLineC[] = OneLiners.plus(viewPos, OneLiners.mul(u, l)); 
+					double posOnLineC[] = Mat.add(viewPos, Mat.mul(u, l)); 
 					System.out.println("\tPosition at "+l+"m from viewPos (CAD) = { " + posOnLineC[0] + ", " +posOnLineC[1] + ", " +posOnLineC[2] + "}");
 					
 					double diff[] = Util.minus(posOnLineM, posOnLineC);
@@ -447,8 +451,8 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 		//ConversionGrid: 
 		// these will be out grid to the outputImageCCD{X/Y} interpolators
 		//  they are fractional position in the transformed image space (oX,oY)
-		double cgX[] = OneLiners.linSpace(0.0, 1.0, outputImageCCDConversionGridSizeX);
-		double cgY[] = OneLiners.linSpace(0.0, 1.0, outputImageCCDConversionGridSizeY);
+		double cgX[] = Mat.linspace(0.0, 1.0, outputImageCCDConversionGridSizeX);
+		double cgY[] = Mat.linspace(0.0, 1.0, outputImageCCDConversionGridSizeY);
 		
 		//linear output coords on conversion grid
 		double cgA[] = new double[cgX.length];
@@ -521,7 +525,7 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 				
 				//find point along beam closest to central view chord
 				double s = Algorithms.pointOnLineNearestAnotherLine(beamGeom.start(iB), beamGeom.uVec(iB), viewPos, avgLosVec);
-				double pos[] = OneLiners.plus(beamGeom.start(iB), OneLiners.mul(beamGeom.uVec(iB), s));  // beamStart + s * beamVec
+				double pos[] = Mat.add(beamGeom.start(iB), Mat.mul(beamGeom.uVec(iB), s));  // beamStart + s * beamVec
 						
 				//toroidal angle of that point
 				double phi0 = FastMath.atan2(pos[1], pos[0]);
@@ -543,7 +547,7 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 						double phi = findPhiAtBeam(iB, R, Z, phi0);
 										    
 						pos = new double[]{ R * FastMath.cos(phi), R * FastMath.sin(phi), Z };
-				        double obsVec[] = OneLiners.reNorm(OneLiners.minus(pos, viewPos));
+				        double obsVec[] = Mat.normaliseVector(Mat.subtract(pos, viewPos));
 				        double lon = FastMath.atan2(obsVec[1], obsVec[0]);
 				        double lat = FastMath.asin(obsVec[2]);
 				        
@@ -608,11 +612,11 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
         			Z
         	};
         	
-        	double u[] = OneLiners.reNorm(OneLiners.minus(curPos, viewPos));
+        	double u[] = Mat.normaliseVector(Mat.subtract(curPos, viewPos));
         	
         	double s = Algorithms.pointOnLineNearestAnotherLine(viewPos, u, beamGeom.start(iB), beamGeom.uVec(iB));
         	
-        	double pos[] = OneLiners.plus(viewPos, OneLiners.mul(u, s));
+        	double pos[] = Mat.add(viewPos, Mat.mul(u, s));
         	
         	double r = FastMath.sqrt(pos[0]*pos[0] + pos[1]*pos[1]);
         	phi = FastMath.atan2(pos[1], pos[0]);
@@ -636,13 +640,13 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 	public static double[] calcAFactors(double virtMeasPlane[][], double viewPos[], double obsPos[], SimpleBeamGeometry beamGeom, int beamIndex){
 		
 		
-		double l[] = OneLiners.reNorm(OneLiners.minus(obsPos, viewPos));	//line of sight
-		double v[] = OneLiners.reNorm(beamGeom.uVec(beamIndex));	//beam
+		double l[] = Mat.normaliseVector(Mat.subtract(obsPos, viewPos));	//line of sight
+		double v[] = Mat.normaliseVector(beamGeom.uVec(beamIndex));	//beam
 		
 		// cylindrical unit vectors
-		double R[] = OneLiners.reNorm(new double[]{ obsPos[0], obsPos[1], 0 }); //Radial
-		double phi[] = OneLiners.reNorm(new double[]{ -obsPos[1], obsPos[0], 0 }); //Radial
-		double Z[] = OneLiners.reNorm(new double[]{ 0, 0, 1 }); //vertical
+		double R[] = Mat.normaliseVector(new double[]{ obsPos[0], obsPos[1], 0 }); //Radial
+		double phi[] = Mat.normaliseVector(new double[]{ -obsPos[1], obsPos[0], 0 }); //Radial
+		double Z[] = Mat.normaliseVector(new double[]{ 0, 0, 1 }); //vertical
 				
 		//the measurement plane
 		double n[] = virtMeasPlane[0];
@@ -650,9 +654,9 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 		double u[] = virtMeasPlane[2];
 		
 		//get polarisation projected components
-		double cVxR[] = vectorCoefficients(l, n, u, r, OneLiners.cross(v, R));	// for BR
-		double cVxP[] = vectorCoefficients(l, n, u, r, OneLiners.cross(v, phi)); // for Bphi
-		double cVxZ[] = vectorCoefficients(l, n, u, r, OneLiners.cross(v, Z)); // for BZ
+		double cVxR[] = vectorCoefficients(l, n, u, r, Mat.cross3d(v, R));	// for BR
+		double cVxP[] = vectorCoefficients(l, n, u, r, Mat.cross3d(v, phi)); // for Bphi
+		double cVxZ[] = vectorCoefficients(l, n, u, r, Mat.cross3d(v, Z)); // for BZ
 		double cR[] = vectorCoefficients(l, n, u, r, R); // for ER
 		double cZ[] = vectorCoefficients(l, n, u, r, Z); // for EZ
 		// added minus signs in front of the first 5 A factors because I couldn't figure out how to do 
@@ -675,22 +679,22 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 		
 		//polarision vector on ray is the original, minus the part parallel to the ray
 		//...but we're going to take dot products with s and p anyway, so this bit doesnt matter
-		//double b[] = OneLiners.reNorm(OneLiners.minus(a, OneLiners.mul(l, OneLiners.dot(a, l)))); // b = a - (a.l)l
-		//double b[] = OneLiners.reNorm(a);
-		//double b[] = OneLiners.minus(a, OneLiners.mul(l, OneLiners.dot(a, l)));
+		//double b[] = Mat.normaliseVector(Mat.subtract(a, Mat.mul(l, Mat.dot(a, l)))); // b = a - (a.l)l
+		//double b[] = Mat.normaliseVector(a);
+		//double b[] = Mat.subtract(a, Mat.mul(l, Mat.dot(a, l)));
 		
 		//calculate the s dir and p dirs on plane and ray
-		double s[] = OneLiners.reNorm(OneLiners.cross(l, n));
-		double pPlane[] = OneLiners.reNorm(OneLiners.cross(n, s));
-		double pRay[] = OneLiners.reNorm(OneLiners.cross(l, s));
+		double s[] = Mat.normaliseVector(Mat.cross3d(l, n));
+		double pPlane[] = Mat.normaliseVector(Mat.cross3d(n, s));
+		double pRay[] = Mat.normaliseVector(Mat.cross3d(l, s));
 		
 		//amplitude of (s,p) components on ray = (b.s), (b.pRay)
-		double As = OneLiners.dot(a, s);
-		double Ap = OneLiners.dot(a, pRay);
+		double As = Mat.dot(a, s);
+		double Ap = Mat.dot(a, pRay);
 
 		//rebuild into vector using s and p in Plane
-		double Au = As*OneLiners.dot(s, u) + Ap*OneLiners.dot(pPlane, u);
-		double Ar = As*OneLiners.dot(s, r) + Ap*OneLiners.dot(pPlane, r);
+		double Au = As*Mat.dot(s, u) + Ap*Mat.dot(pPlane, u);
+		double Ar = As*Mat.dot(s, r) + Ap*Mat.dot(pPlane, r);
 	
 		return new double[]{ Ar, Au };
 	}
@@ -751,7 +755,7 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
         			RZ[1]
         	};
         	
-        	u = OneLiners.reNorm(OneLiners.minus(curPos, cameraPos));
+        	u = Mat.normaliseVector(Mat.subtract(curPos, cameraPos));
         	
         	double s = Algorithms.pointOnLineNearestAnotherLine(cameraPos, u, B, v);
         	
@@ -1001,7 +1005,7 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 	public void saveConfig(String id){
 		if(id.startsWith("gmds")){
 			String parts[] = id.split("/");
-			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			saveConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 			lastLoadedConfig = id;
 		}else if(id.startsWith("jsonfile:")){
 			saveConfigJSON(id.substring(9));
@@ -1019,7 +1023,7 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 		
 		String jsonText = gson.toJson(xform);
 		
-		OneLiners.TextToFile(fileName, jsonText);
+		OneLiners.textToFile(fileName, jsonText);
 	}
 	
 	public void saveConfigGMDS(String experiment, int pulse){
@@ -1056,7 +1060,7 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 		
 		if(id.startsWith("gmds")){
 			String parts[] = id.split("/");
-			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 		}else if(id.startsWith("jsonfile:")){
 			loadConfigJSON(id.substring(9));
 		}else
@@ -1343,10 +1347,10 @@ public class TransformProcessor extends ImgProcPipeMultithread implements Config
 			}		
 		}
 
-		status = "Writing uX.txt..."; updateAllControllers(); AsciiMatrixFile.mustWrite(outPath + "/uX.txt", uX);
-		status = "Writing uY.txt..."; updateAllControllers(); AsciiMatrixFile.mustWrite(outPath + "/uY.txt", uY);
-		status = "Writing uZ.txt..."; updateAllControllers(); AsciiMatrixFile.mustWrite(outPath + "/uZ.txt", uZ);
-		AsciiMatrixFile.mustWrite(outPath + "/cameraPos.txt", xform.getViewPosition());
+		status = "Writing uX.txt..."; updateAllControllers(); Mat.mustWriteAscii(outPath + "/uX.txt", uX);
+		status = "Writing uY.txt..."; updateAllControllers(); Mat.mustWriteAscii(outPath + "/uY.txt", uY);
+		status = "Writing uZ.txt..."; updateAllControllers(); Mat.mustWriteAscii(outPath + "/uZ.txt", uZ);
+		Mat.mustWriteAscii(outPath + "/cameraPos.txt", xform.getViewPosition());
 		
 		status = "Completed writing LOS vectors to " + outPath;
 		updateAllControllers();
diff --git a/src/imageProc/proc/transform/TransformSWTController.java b/src/imageProc/proc/transform/TransformSWTController.java
index 6dcc1ae63d4fd8414f13e908ce6d44b81400c444..2af6a7df7b3adc1f89cb28f66f5d58693d22ddc4 100644
--- a/src/imageProc/proc/transform/TransformSWTController.java
+++ b/src/imageProc/proc/transform/TransformSWTController.java
@@ -42,6 +42,10 @@ import fusionDefs.transform.PhysicalROIGeometry;
 import fusionDefs.transform.TransformPoint;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** The table directly relfects the config data in the processor's map
  * Edits are made into that cfg immediately.
@@ -640,7 +644,7 @@ public class TransformSWTController extends ImgProcPipeSWTController implements
 					if(bestMatchIdx > 0){ 
 						point.mode = bestMatchIdx;
 					}else{//otherwise, fall back to interpreting as a number
-						point.mode = OneLiners.mustParseInt(text);
+						point.mode = Algorithms.mustParseInt(text);
 						
 					}
 					
@@ -649,7 +653,7 @@ public class TransformSWTController extends ImgProcPipeSWTController implements
 				}
 			}else{
 				if(pointName.length() > 0 && point != null){ //can only edit values for existing points
-					double val = OneLiners.mustParseDouble(text);
+					double val = Algorithms.mustParseDouble(text);
 					
 					//special handling of AUG vs stupid coordinates
 					if(column == 4 || column == 5){ //AUG X/Y coords
diff --git a/src/imageProc/sources/capture/andorCam/AndorCamCapture.java b/src/imageProc/sources/capture/andorCam/AndorCamCapture.java
index ab9f8d426984efc3bfb626a1c4eb45f6224048f1..4084bb0cd126a29debceb75677d084f54ccc7d36 100644
--- a/src/imageProc/sources/capture/andorCam/AndorCamCapture.java
+++ b/src/imageProc/sources/capture/andorCam/AndorCamCapture.java
@@ -641,7 +641,7 @@ public class AndorCamCapture extends Capture implements Runnable  {
 		 
 		ByteBuffer buff = ByteBuffer.wrap(ticksData[i]);
 		buff.order(ByteOrder.LITTLE_ENDIAN);
-		//OneLiners.dumpArray(ticksData);
+		//Mat.dumpArray(ticksData);
 		
 		ticksLong[i] = buff.getLong(0);
 		if(ticksLong[i] < 0)
diff --git a/src/imageProc/sources/capture/andorCam/AndorCamConfig.java b/src/imageProc/sources/capture/andorCam/AndorCamConfig.java
index 799946592e2f0fb90b57031e5b4659297987c2f3..a07a5e452fdcbdd73016df5b2fc60bc0c76da375 100644
--- a/src/imageProc/sources/capture/andorCam/AndorCamConfig.java
+++ b/src/imageProc/sources/capture/andorCam/AndorCamConfig.java
@@ -11,6 +11,10 @@ import java.util.TreeMap;
 import imageProc.sources.capture.andorCam.AndorCamConfig.AndorFeature.FeatureType;
 import imageProc.sources.capture.base.CaptureConfig;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class AndorCamConfig extends CaptureConfig {
 
@@ -159,8 +163,8 @@ public class AndorCamConfig extends CaptureConfig {
 				return;
 			switch(type){
 				case BOOL: this.value = (Boolean)(value.equalsIgnoreCase("Y") || value.equalsIgnoreCase("T") || value.equalsIgnoreCase("TRUE")); break;
-				case INT: this.value = (Long)OneLiners.mustParseLong(value); break;
-				case FLOAT:  this.value = (Double)OneLiners.mustParseDouble(value); break;
+				case INT: this.value = (Long)Algorithms.mustParseLong(value); break;
+				case FLOAT:  this.value = (Double)Algorithms.mustParseDouble(value); break;
 				case STRING: this.value = value;
 				case ENUM: this.value = value;
 				default: // !?
diff --git a/src/imageProc/sources/capture/andorCam/AndorCamSource.java b/src/imageProc/sources/capture/andorCam/AndorCamSource.java
index c55e4f43cfb1e03e573a8ddbb04ef28002907351..05891267bb2b54375b0b949bf34afcf46116f6d7 100644
--- a/src/imageProc/sources/capture/andorCam/AndorCamSource.java
+++ b/src/imageProc/sources/capture/andorCam/AndorCamSource.java
@@ -32,6 +32,10 @@ import imageProc.sources.capture.picam.PicamConfig;
 import imageProc.sources.capture.picam.PicamConfig.Parameter;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import picamJNI.PICamDefs;
 import picamJNI.PICamROIs;
 import picamJNI.PICamROIs.PICamROI;
@@ -343,7 +347,7 @@ public class AndorCamSource extends CaptureSource {
 				.create(); 
 		String json = gson.toJson(config);
 	
-		OneLiners.TextToFile(fileName, json);	
+		OneLiners.textToFile(fileName, json);	
 	}
 
 
diff --git a/src/imageProc/sources/capture/andorCam/swt/SimpleSettingsPanel.java b/src/imageProc/sources/capture/andorCam/swt/SimpleSettingsPanel.java
index 5971cce38a1205899ee57f1122f1687548e5294d..2d7d86b18b48ff5382ad3748c1282d11b6e89774 100644
--- a/src/imageProc/sources/capture/andorCam/swt/SimpleSettingsPanel.java
+++ b/src/imageProc/sources/capture/andorCam/swt/SimpleSettingsPanel.java
@@ -21,6 +21,10 @@ import imageProc.sources.capture.andorCam.AndorCamSource;
 import imageProc.sources.capture.andorCam.AndorCamConfig.AndorFeature;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SimpleSettingsPanel {
 	public static final double log2 = FastMath.log(2);
@@ -264,12 +268,12 @@ public class SimpleSettingsPanel {
 		config.setFeature("ElectronicShutteringMode", shutterModeCombo.getText());
 		config.setFeature("SimplePreAmpGainControl", gainModeCombo.getText());
 		config.setFeature("TriggerMode", triggerModeCombo.getText());
-		double expTime = OneLiners.mustParseDouble(exposureLengthTextbox.getText());
+		double expTime = Algorithms.mustParseDouble(exposureLengthTextbox.getText());
 		config.setFeature("ExposureTime", 1e-6 * expTime);
 		exposureLengthTextbox.setText(Double.toString(expTime));
 		config.setFeature("Overlap", overlappedModeCheckbox.getSelection());
 
-		double frameTime = OneLiners.mustParseDouble(frameTimeTextbox.getText());
+		double frameTime = Algorithms.mustParseDouble(frameTimeTextbox.getText());
 		
 		config.setFeature("FrameRate", (Double)(1e6 / frameTime));
 		frameTimeTextbox.setText(Double.toString(frameTime));
diff --git a/src/imageProc/sources/capture/andorV2/AndorV2Source.java b/src/imageProc/sources/capture/andorV2/AndorV2Source.java
index b091e6c4539d3f1bdba7251f19c9d1a1433bd1f4..a8cc449fac8296103866aebe434ee130149a2b01 100644
--- a/src/imageProc/sources/capture/andorV2/AndorV2Source.java
+++ b/src/imageProc/sources/capture/andorV2/AndorV2Source.java
@@ -29,6 +29,10 @@ import imageProc.sources.capture.base.CaptureSource;
 import imageProc.sources.capture.flir.FLIRCamConfig;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 /** Sensicam Image Source.
diff --git a/src/imageProc/sources/capture/andorV2/swt/AndorV2SWTControl.java b/src/imageProc/sources/capture/andorV2/swt/AndorV2SWTControl.java
index 6ebb6ea7d4f83cd2e449cb1498fae7add7b2f436..db1e41dd0a450ce0066369e1fa815e6b71c04e30 100644
--- a/src/imageProc/sources/capture/andorV2/swt/AndorV2SWTControl.java
+++ b/src/imageProc/sources/capture/andorV2/swt/AndorV2SWTControl.java
@@ -31,6 +31,10 @@ import imageProc.sources.capture.andorV2.AndorV2Config;
 import imageProc.sources.capture.andorV2.AndorV2Source;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class AndorV2SWTControl implements ImagePipeControllerROISettable, SWTControllerInfoDraw {
 	public static final double log2 = FastMath.log(2);
@@ -240,7 +244,7 @@ public class AndorV2SWTControl implements ImagePipeControllerROISettable, SWTCon
 			config.selectSerialNumber = -1; 
 		}else{
 			String parts[] = cameraSel.split(":");			
-			config.selectSerialNumber = (parts.length > 1) ? OneLiners.mustParseInt(parts[1]) : -1;
+			config.selectSerialNumber = (parts.length > 1) ? Algorithms.mustParseInt(parts[1]) : -1;
 		}
 		
 		try{ config.singleUSBBus = Integer.parseInt(singleBusTextbox.getText().strip()); }catch(NumberFormatException err) { config.singleUSBBus = -1; }
diff --git a/src/imageProc/sources/capture/andorV2/swt/ROIConfigPanel.java b/src/imageProc/sources/capture/andorV2/swt/ROIConfigPanel.java
index 4526b8fdb0faa3feb3116da90a741760f51c771c..d012d97c63f1f1f4334e482b29fcb728e8bd83a3 100644
--- a/src/imageProc/sources/capture/andorV2/swt/ROIConfigPanel.java
+++ b/src/imageProc/sources/capture/andorV2/swt/ROIConfigPanel.java
@@ -29,6 +29,10 @@ import imageProc.core.ImgSource;
 import imageProc.sources.capture.andorV2.AndorV2Config;
 import imageProc.sources.capture.andorV2.AndorV2Source;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class ROIConfigPanel {
 	
@@ -236,13 +240,13 @@ public class ROIConfigPanel {
 	
 					break;
 	
-				case 3: roi.x = OneLiners.mustParseInt(text); item.setText(3, Integer.toString(roi.x)); break;
-				case 4: roi.width = OneLiners.mustParseInt(text); item.setText(4, Integer.toString(roi.width)); break;
-				case 5: roi.x_binning = OneLiners.mustParseInt(text); item.setText(5, Integer.toString(roi.x_binning)); break;
+				case 3: roi.x = Algorithms.mustParseInt(text); item.setText(3, Integer.toString(roi.x)); break;
+				case 4: roi.width = Algorithms.mustParseInt(text); item.setText(4, Integer.toString(roi.width)); break;
+				case 5: roi.x_binning = Algorithms.mustParseInt(text); item.setText(5, Integer.toString(roi.x_binning)); break;
 				
-				case 6: roi.y = OneLiners.mustParseInt(text); item.setText(6, Integer.toString(roi.y)); break;
-				case 7: roi.height = OneLiners.mustParseInt(text); item.setText(7, Integer.toString(roi.height)); break;
-				case 8: roi.y_binning = OneLiners.mustParseInt(text); item.setText(8, Integer.toString(roi.y_binning)); break;
+				case 6: roi.y = Algorithms.mustParseInt(text); item.setText(6, Integer.toString(roi.y)); break;
+				case 7: roi.height = Algorithms.mustParseInt(text); item.setText(7, Integer.toString(roi.height)); break;
+				case 8: roi.y_binning = Algorithms.mustParseInt(text); item.setText(8, Integer.toString(roi.y_binning)); break;
 				
 			}
 
diff --git a/src/imageProc/sources/capture/andorV2/swt/SimpleSettingsPanel.java b/src/imageProc/sources/capture/andorV2/swt/SimpleSettingsPanel.java
index a308a08edd3e687037a2b597645d46549cd189d9..2c0b85cf81aba7c491c180a1dd0e06d30228b913 100644
--- a/src/imageProc/sources/capture/andorV2/swt/SimpleSettingsPanel.java
+++ b/src/imageProc/sources/capture/andorV2/swt/SimpleSettingsPanel.java
@@ -20,6 +20,10 @@ import imageProc.sources.capture.andorV2.AndorV2Config;
 import imageProc.sources.capture.andorV2.AndorV2Source;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SimpleSettingsPanel {
 	public static final double log2 = FastMath.log(2);
@@ -301,16 +305,16 @@ public class SimpleSettingsPanel {
 		config.triggerMode = triggerModeCombo.getSelectionIndex();
 		config.preAmpGainIndex = preAmpGainCombo.getSelectionIndex();
 		config.emccdGainMode = emccdGainModeCombo.getSelectionIndex();
-		config.emccdGain = OneLiners.mustParseInt(emccdGainTextbox.getText());
+		config.emccdGain = Algorithms.mustParseInt(emccdGainTextbox.getText());
 		
 		config.horizShiftSpeedIndex = hsSpeedCombo.getSelectionIndex();
 		config.vertShiftSpeedIndex = vsSpeedCombo.getSelectionIndex();
 		config.vertShiftAmplitudeIndex = vsSpeedAmplitudeCombo.getSelectionIndex();
 				
-		config.exposureTimeSecs = (float)(OneLiners.mustParseDouble(exposureLengthTextbox.getText()) / 1000.0);
-		config.kineticCycleTimeSecs = (float)(OneLiners.mustParseDouble(kineticCycleTimeTextbox.getText()) / 1000.0);
+		config.exposureTimeSecs = (float)(Algorithms.mustParseDouble(exposureLengthTextbox.getText()) / 1000.0);
+		config.kineticCycleTimeSecs = (float)(Algorithms.mustParseDouble(kineticCycleTimeTextbox.getText()) / 1000.0);
 		config.nAccumulations = numAccumulationsSpinner.getSelection();
-		config.accumulationCycleTimeSecs = (float)(OneLiners.mustParseDouble(accumulateCycleTimeTextbox.getText()) / 1000.0);
+		config.accumulationCycleTimeSecs = (float)(Algorithms.mustParseDouble(accumulateCycleTimeTextbox.getText()) / 1000.0);
 		
 		config.coolerOn = coolingCheckbox.getSelection();
 		config.targetTemp = coolingSetTempSpinner.getSelection();
diff --git a/src/imageProc/sources/capture/as5216/AvantesAS5216Source.java b/src/imageProc/sources/capture/as5216/AvantesAS5216Source.java
index abce35fbc537fe495476ed369b9daabe43002952..70c18214c1c318da96fbc0729939f779d8244f9a 100644
--- a/src/imageProc/sources/capture/as5216/AvantesAS5216Source.java
+++ b/src/imageProc/sources/capture/as5216/AvantesAS5216Source.java
@@ -25,6 +25,10 @@ import imageProc.sources.capture.base.CaptureConfig;
 import imageProc.sources.capture.base.CaptureSource;
 import imageProc.sources.capture.oceanOptics.swt.OmniDriverSWTControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class AvantesAS5216Source extends CaptureSource implements ImgSource, ConfigurableByID {
 	private ByteBufferImage images[];
@@ -229,7 +233,7 @@ public class AvantesAS5216Source extends CaptureSource implements ImgSource, Con
 	@Override
 	public boolean setConfigParameter(String param, String value) {
 		if(param.equals("runLength")){
-			double runLengthSecs = OneLiners.mustParseDouble(value);
+			double runLengthSecs = Algorithms.mustParseDouble(value);
 			config.nImagesToAllocate = (int)(runLengthSecs / 00000000 + 0.5);
 			return true;
 		}
diff --git a/src/imageProc/sources/capture/avaspec/AvaspecSource.java b/src/imageProc/sources/capture/avaspec/AvaspecSource.java
index 097767f1cae8641a4ad7ce452d4b457d2be90cac..189798865c613757262adb332ffc2a3811d70d52 100644
--- a/src/imageProc/sources/capture/avaspec/AvaspecSource.java
+++ b/src/imageProc/sources/capture/avaspec/AvaspecSource.java
@@ -28,6 +28,10 @@ import imageProc.sources.capture.base.CaptureSource;
 import imageProc.sources.capture.picam.PicamConfig;
 import imageProc.sources.capture.picam.PicamConfig.Parameter;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.SettingsManager;
 import picamJNI.PICamDefs;
 import picamJNI.PICamROIs;
@@ -176,14 +180,14 @@ public class AvaspecSource extends CaptureSource implements ConfigurableByID {
 			float wavelengths[][] = capture.getWavelengths();
 			setSeriesMetaData("Avaspec/wavelengths", wavelengths, false);
 			setSeriesMetaData("wavelength", wavelengths[0], false);			
-			double time[] = OneLiners.fillArray(Double.NaN, config.nFrames);
+			double time[] = Mat.fillArray(Double.NaN, config.nFrames);
 			setSeriesMetaData("time", time, true);
 			long nanoTime[] = new long[config.nFrames];
 			setSeriesMetaData("Avaspec/nanoTime", nanoTime, true);
 			setSeriesMetaData("Avaspec/exposureTimeMS", config.expTimeMS, false);
 			setSeriesMetaData("Avaspec/extTrigger", config.extTrigger, false);
 			if(config.readDigitalIO){
-				int digitalInState[] = OneLiners.fillIntArray(-2, config.nFrames);
+				int digitalInState[] = Mat.fillIntArray(-2, config.nFrames);
 				capture.setDigitalInStateArray(digitalInState);
 				setSeriesMetaData("Avaspec/DigitalInState", digitalInState, true);
 			}
diff --git a/src/imageProc/sources/capture/base/CaptureSource.java b/src/imageProc/sources/capture/base/CaptureSource.java
index dce3349974abb0f0bc81e4d629fbc47893e6ae6c..1b1ba57321f37b91472032a1db420cfaee8ba883 100644
--- a/src/imageProc/sources/capture/base/CaptureSource.java
+++ b/src/imageProc/sources/capture/base/CaptureSource.java
@@ -15,6 +15,10 @@ import imageProc.core.ImgSource;
 import imageProc.core.EventReciever.Event;
 import imageProc.sources.capture.flir.FLIRCamConfig;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** Base class of sources for acqusition devices */ 
 public abstract class CaptureSource extends ImgPipe implements ImgSource, AcquisitionDevice, EventReciever, ConfigurableByID {
@@ -83,7 +87,7 @@ public abstract class CaptureSource extends ImgPipe implements ImgSource, Acquis
 		String parts[] = id.split("/");
 		if(parts[0].equals("gmds")) { 
 			//specifically for loading configurations from metadata saved in GMDS
-			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, OneLiners.mustParseInt(parts[2]));
+			loadConfigGMDS(parts[1].length() > 0 ? parts[1] : null, Algorithms.mustParseInt(parts[2]));
 		}else if(id.startsWith("jsonfile:"))
 			loadConfigJSON(id.substring(9));
 		else
@@ -127,7 +131,7 @@ public abstract class CaptureSource extends ImgPipe implements ImgSource, Acquis
 				.create(); 
 		String json = gson.toJson(getConfig());
 
-		OneLiners.TextToFile(fileName, json);
+		OneLiners.textToFile(fileName, json);
 	}
 	
 	@Override
diff --git a/src/imageProc/sources/capture/flir/FLIRCamSource.java b/src/imageProc/sources/capture/flir/FLIRCamSource.java
index ce42309f91ea4cc5ca51fa7f4caf5bd90027b3e6..fed477f1de232d49a1b1a1ffec5360a551e796e6 100644
--- a/src/imageProc/sources/capture/flir/FLIRCamSource.java
+++ b/src/imageProc/sources/capture/flir/FLIRCamSource.java
@@ -24,6 +24,10 @@ import imageProc.sources.capture.base.CaptureSource;
 import imageProc.sources.capture.flir.swt.FLIRCamSWTControl;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 /**
@@ -306,7 +310,7 @@ public class FLIRCamSource extends CaptureSource {
 	@Override
 	public boolean setConfigParameter(String param, String value) {
 		if (param.equals("runLength")) {
-			double runLengthSecs = OneLiners.mustParseDouble(value);
+			double runLengthSecs = Algorithms.mustParseDouble(value);
 			config.nImagesToAllocate = (int) (runLengthSecs * 1000.0 / config.frameTimeMS() + 0.5);
 			return true;
 		}
diff --git a/src/imageProc/sources/capture/flir/swt/MultiConfigPanel.java b/src/imageProc/sources/capture/flir/swt/MultiConfigPanel.java
index 408510e0d31e62b062fa53c44c1107055f8268f0..37564f0c1b6d41e775ab18a38d7633c680dc508c 100644
--- a/src/imageProc/sources/capture/flir/swt/MultiConfigPanel.java
+++ b/src/imageProc/sources/capture/flir/swt/MultiConfigPanel.java
@@ -22,6 +22,10 @@ import imageProc.sources.capture.flir.FLIRCamConfig;
 import imageProc.sources.capture.flir.FLIRCamSource;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class MultiConfigPanel {
 	public static final double log2 = FastMath.log(2);
@@ -165,9 +169,9 @@ public class MultiConfigPanel {
 			int totalImages = 0;
 			for (int i = 0; i < mcNumImagesSpinner.length; i++) {
 				config.multiConfigNumImgs[i] = mcNumImagesSpinner[i].getSelection();
-				config.multiConfigExposureTime[i] = (float) OneLiners.mustParseDouble(mcExposureTimeTextbox[i].getText());
-				config.multiConfigFramerate[i] = (float) OneLiners.mustParseDouble(mcFramerateTextbox[i].getText());
-				config.multiConfigWaitTime[i] = OneLiners.mustParseLong(mcWaitTimeTextbox[i].getText());
+				config.multiConfigExposureTime[i] = (float) Algorithms.mustParseDouble(mcExposureTimeTextbox[i].getText());
+				config.multiConfigFramerate[i] = (float) Algorithms.mustParseDouble(mcFramerateTextbox[i].getText());
+				config.multiConfigWaitTime[i] = Algorithms.mustParseLong(mcWaitTimeTextbox[i].getText());
 				totalImages += config.multiConfigNumImgs[i];
 			}
 			config.nImagesToAllocate = totalImages;
diff --git a/src/imageProc/sources/capture/flir/swt/SimpleSettingsPanel.java b/src/imageProc/sources/capture/flir/swt/SimpleSettingsPanel.java
index 2eb577dc2c6a716b93c303f6101cba4aa58b90c3..258ed8279695b945f6a73efbb804068b70b45471 100644
--- a/src/imageProc/sources/capture/flir/swt/SimpleSettingsPanel.java
+++ b/src/imageProc/sources/capture/flir/swt/SimpleSettingsPanel.java
@@ -22,6 +22,10 @@ import imageProc.sources.capture.flir.FLIRCamConfig;
 import imageProc.sources.capture.flir.FLIRCamSource;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SimpleSettingsPanel {
 	public static final double log2 = FastMath.log(2);
@@ -267,10 +271,10 @@ public class SimpleSettingsPanel {
 		config.timestampMode = timestampModeCombo.getSelectionIndex();
 		config.triggerMode = (short) triggerModeCombo.getSelectionIndex();
 
-		config.exposureTime = (float) OneLiners.mustParseDouble(exposureTimeTextbox.getText());
+		config.exposureTime = (float) Algorithms.mustParseDouble(exposureTimeTextbox.getText());
 		config.exposureTimeUnits = FLIRCamConfig.TIMEBASE_MICROSECS;
 
-		config.framerate = (float) OneLiners.mustParseDouble(frameRateTextbox.getText());
+		config.framerate = (float) Algorithms.mustParseDouble(frameRateTextbox.getText());
 
 		config.roiOffsetX = (short) (roiOffsetXText.getSelection());
 		config.roiOffsetY = (short) (roiOffsetYText.getSelection());
diff --git a/src/imageProc/sources/capture/oceanOptics/OmniDriverCapture.java b/src/imageProc/sources/capture/oceanOptics/OmniDriverCapture.java
index 5e88ac5981acfb617d11b647630d0b93c320b394..9534c4b50b935e13afe35731d240de8f0c17ae40 100644
--- a/src/imageProc/sources/capture/oceanOptics/OmniDriverCapture.java
+++ b/src/imageProc/sources/capture/oceanOptics/OmniDriverCapture.java
@@ -30,6 +30,10 @@ import imageProc.sources.capture.oceanOptics.OmniDriverConfig.GPIOState;
 import imageProc.sources.capture.pco.PCOCamConfig;
 import imageProc.sources.capture.pco.PCOCamSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** The capture thread and interfacing with OmniDriver 
  * for using OceanOptics USB spectrometers.
diff --git a/src/imageProc/sources/capture/oceanOptics/OmniDriverSource.java b/src/imageProc/sources/capture/oceanOptics/OmniDriverSource.java
index 5acea71397c2db6382e8444ed41c2fbed3f15a2a..6ab8ccc16df19f1329ef5caa7cc39810d86217ab 100644
--- a/src/imageProc/sources/capture/oceanOptics/OmniDriverSource.java
+++ b/src/imageProc/sources/capture/oceanOptics/OmniDriverSource.java
@@ -26,6 +26,10 @@ import imageProc.sources.capture.base.CaptureSource;
 import imageProc.sources.capture.flir.FLIRCamConfig;
 import imageProc.sources.capture.oceanOptics.swt.OmniDriverSWTControl;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class OmniDriverSource extends CaptureSource {
 	private ByteBufferImage images[];
diff --git a/src/imageProc/sources/capture/oceanOptics/TestOmniDriver.java b/src/imageProc/sources/capture/oceanOptics/TestOmniDriver.java
index c46d2397a322a669892f70b65c8ba2cb97db844b..3808a5dca6c0511775c7ed610e7d8f91320a54e1 100644
--- a/src/imageProc/sources/capture/oceanOptics/TestOmniDriver.java
+++ b/src/imageProc/sources/capture/oceanOptics/TestOmniDriver.java
@@ -4,6 +4,10 @@ import com.oceanoptics.omnidriver.api.wrapper.Wrapper;
 import com.oceanoptics.omnidriver.constants.USBProductInfo;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class TestOmniDriver {
 	public static void main(String[] args) {
@@ -19,7 +23,7 @@ public class TestOmniDriver {
 			System.out.println(wrapper.getName(0));
 			
 			double d[] = wrapper.getSpectrum(0);
-			OneLiners.dumpArray(d);
+			Mat.dumpArray(d);
 			
 			wrapper.closeAllSpectrometers();
 			
diff --git a/src/imageProc/sources/capture/oceanOptics/TestOmniDriver2.java b/src/imageProc/sources/capture/oceanOptics/TestOmniDriver2.java
index b5aee920133244c4e23ceab00ce1830805b66194..86f3642c62390ce16666a07060d9e7b6bf2360b3 100644
--- a/src/imageProc/sources/capture/oceanOptics/TestOmniDriver2.java
+++ b/src/imageProc/sources/capture/oceanOptics/TestOmniDriver2.java
@@ -13,6 +13,10 @@ import com.oceanoptics.omnidriver.spectrometer.hr4000.HR4000;
 import com.oceanoptics.omnidriver.spectrometer.sts.STS;
 
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class TestOmniDriver2 {
 		
@@ -49,7 +53,7 @@ public class TestOmniDriver2 {
 			
 			for(int i=0;i < 10; i++) {
 				double d[] = wrapper.getSpectrum(0);
-				OneLiners.dumpArray(d);
+				Mat.dumpArray(d);
 			}
 			
 			wrapper.closeAllSpectrometers();
diff --git a/src/imageProc/sources/capture/pco/PCOCamSource.java b/src/imageProc/sources/capture/pco/PCOCamSource.java
index 152a48375ae1beb4da55a85a4a342faa1298bd1e..0d6793c9eda03400b406b336a334ec34e225d1ac 100644
--- a/src/imageProc/sources/capture/pco/PCOCamSource.java
+++ b/src/imageProc/sources/capture/pco/PCOCamSource.java
@@ -25,6 +25,10 @@ import imageProc.sources.capture.flir.FLIRCamConfig;
 import imageProc.sources.capture.pco.swt.PCOCamSWTControl;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 /** Image source for PCO Cameras.
@@ -253,7 +257,7 @@ public class PCOCamSource extends CaptureSource implements ConfigurableByID {
 	@Override
 	public boolean setConfigParameter(String param, String value) {
 		if(param.equals("runLength")){
-			double runLengthSecs = OneLiners.mustParseDouble(value);
+			double runLengthSecs = Algorithms.mustParseDouble(value);
 			config.nImagesToAllocate = (int)(runLengthSecs * 1000.0 / config.frameTimeMS() + 0.5);
 			return true;
 		}
diff --git a/src/imageProc/sources/capture/pco/swt/MultiConfigPanel.java b/src/imageProc/sources/capture/pco/swt/MultiConfigPanel.java
index 3a80ee4d75930180bc788b4e84bfb7b949093546..1380aa19a260ecaa811aada6e81ee10276b9a24e 100644
--- a/src/imageProc/sources/capture/pco/swt/MultiConfigPanel.java
+++ b/src/imageProc/sources/capture/pco/swt/MultiConfigPanel.java
@@ -22,6 +22,10 @@ import imageProc.sources.capture.pco.PCOCamConfig;
 import imageProc.sources.capture.pco.PCOCamSource;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import pcoJNI.PCOComm;
 
 public class MultiConfigPanel {
diff --git a/src/imageProc/sources/capture/pco/swt/SimpleSettingsPanel.java b/src/imageProc/sources/capture/pco/swt/SimpleSettingsPanel.java
index cd6fc0335c4cc9d5ea2e78daec2a0309a839b6b6..48613d10af6729f68c78b3829fb922e41ff9a44e 100644
--- a/src/imageProc/sources/capture/pco/swt/SimpleSettingsPanel.java
+++ b/src/imageProc/sources/capture/pco/swt/SimpleSettingsPanel.java
@@ -22,6 +22,10 @@ import imageProc.sources.capture.pco.PCOCamConfig;
 import imageProc.sources.capture.pco.PCOCamSource;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import pcoJNI.PCOComm;
 
 public class SimpleSettingsPanel {
@@ -214,7 +218,7 @@ public class SimpleSettingsPanel {
 		
 		double lastExpDly = config.delayTimeMS() + config.exposureTimeMS();
 		
-		double expTimeUS = OneLiners.mustParseDouble(exposureLengthTextbox.getText());
+		double expTimeUS = Algorithms.mustParseDouble(exposureLengthTextbox.getText());
 		if(expTimeUS < Integer.MAX_VALUE){
 			config.exp_time = (int)expTimeUS;
 			config.exp_timebase = PCOCamConfig.TIMEBASE_MICROSECS;
@@ -223,7 +227,7 @@ public class SimpleSettingsPanel {
 			config.exp_timebase = PCOCamConfig.TIMEBASE_MILLISECS;
 		}
 		
-		double delayTimeUS = OneLiners.mustParseDouble(delayTimeTextbox.getText());		
+		double delayTimeUS = Algorithms.mustParseDouble(delayTimeTextbox.getText());		
 		if(delayTimeUS < Integer.MAX_VALUE){
 			config.delay_time = (int)delayTimeUS;
 			config.delay_timebase = PCOCamConfig.TIMEBASE_MICROSECS;
@@ -244,7 +248,7 @@ public class SimpleSettingsPanel {
 		config.roiX1 = (short) (roiX1Text.getSelection() + 1);
 		config.roiY1 = (short) (roiY1Text.getSelection() + 1);			
 			
-		config.conversionFactor = OneLiners.mustParseDouble(conversionFactorTextbox.getText());
+		config.conversionFactor = Algorithms.mustParseDouble(conversionFactorTextbox.getText());
 	}
 	
 	public void frameTimeMinMaxEvent(boolean max){
diff --git a/src/imageProc/sources/capture/picam/PicamConfig.java b/src/imageProc/sources/capture/picam/PicamConfig.java
index e16f91627dc49fda3ce6851fb24de1792aa25859..37646e77c7bc90349f1621b2144e73a8f11d5679 100644
--- a/src/imageProc/sources/capture/picam/PicamConfig.java
+++ b/src/imageProc/sources/capture/picam/PicamConfig.java
@@ -10,6 +10,10 @@ import java.util.TreeMap;
 
 import imageProc.sources.capture.base.CaptureConfig;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import picamJNI.PICamDefs;
 import picamJNI.PICamParameters;
 import picamJNI.PICamROIs;
@@ -166,9 +170,9 @@ public class PicamConfig extends CaptureConfig {
 				return;
 			switch(type){
 				case PICamDefs.valueType_Boolean: this.value = (Boolean)(value.equalsIgnoreCase("Y") || value.equalsIgnoreCase("T") || value.equalsIgnoreCase("TRUE")); break;
-				case PICamDefs.valueType_Integer: this.value = (Integer)OneLiners.mustParseInt(value); break;
-				case PICamDefs.valueType_LargeInteger: this.value = (Long)OneLiners.mustParseLong(value); break;
-				case PICamDefs.valueType_FloatingPoint:  this.value = (Double)OneLiners.mustParseDouble(value); break;
+				case PICamDefs.valueType_Integer: this.value = (Integer)Algorithms.mustParseInt(value); break;
+				case PICamDefs.valueType_LargeInteger: this.value = (Long)Algorithms.mustParseLong(value); break;
+				case PICamDefs.valueType_FloatingPoint:  this.value = (Double)Algorithms.mustParseDouble(value); break;
 				case PICamDefs.valueType_Enumeration: 
 					for(int i=0; i < enumStrings.length; i++){
 						if(value.equals(enumStrings[i])){
diff --git a/src/imageProc/sources/capture/picam/PicamSource.java b/src/imageProc/sources/capture/picam/PicamSource.java
index bb19ed3a20fdfea72924b36e3cfdf99232c26b86..640f1e4ea2104ac53d73fffb7a9893b2926ccb3c 100644
--- a/src/imageProc/sources/capture/picam/PicamSource.java
+++ b/src/imageProc/sources/capture/picam/PicamSource.java
@@ -24,6 +24,10 @@ import imageProc.sources.capture.picam.PicamConfig.Parameter;
 import imageProc.sources.capture.picam.swt.PicamSWTControl;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import picamJNI.PICamDefs;
 import picamJNI.PICamROIs;
 import picamJNI.PICamROIs.PICamROI;
diff --git a/src/imageProc/sources/capture/picam/swt/ROIConfigPanel.java b/src/imageProc/sources/capture/picam/swt/ROIConfigPanel.java
index 8dc1bb6ef80ddda7be6f6f18a33c56c6446b6a2d..6cb845ae9730e9a15a8f617806b226923577d337 100644
--- a/src/imageProc/sources/capture/picam/swt/ROIConfigPanel.java
+++ b/src/imageProc/sources/capture/picam/swt/ROIConfigPanel.java
@@ -38,6 +38,10 @@ import imageProc.core.swt.EditableTable.EditType;
 import imageProc.sources.capture.picam.PicamConfig;
 import imageProc.sources.capture.picam.PicamSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import picamJNI.PICamROIs;
 import picamJNI.PICamROIs.PICamROI;
 
@@ -227,14 +231,14 @@ public class ROIConfigPanel {
 	
 					break;
 					
-				case 2: roi.enabled = !OneLiners.mustParseBoolean(item.getText(2));	item.setText(2, roi.enabled ? "Y" : ""); break;
-				case 3: roi.x = OneLiners.mustParseInt(text); item.setText(3, Integer.toString(roi.x)); break;
-				case 4: roi.width = OneLiners.mustParseInt(text); item.setText(4, Integer.toString(roi.width)); break;
-				case 5: roi.x_binning = OneLiners.mustParseInt(text); item.setText(5, Integer.toString(roi.x_binning)); break;
+				case 2: roi.enabled = !Algorithms.mustParseBoolean(item.getText(2));	item.setText(2, roi.enabled ? "Y" : ""); break;
+				case 3: roi.x = Algorithms.mustParseInt(text); item.setText(3, Integer.toString(roi.x)); break;
+				case 4: roi.width = Algorithms.mustParseInt(text); item.setText(4, Integer.toString(roi.width)); break;
+				case 5: roi.x_binning = Algorithms.mustParseInt(text); item.setText(5, Integer.toString(roi.x_binning)); break;
 				
-				case 6: roi.y = OneLiners.mustParseInt(text); item.setText(6, Integer.toString(roi.y)); break;
-				case 7: roi.height = OneLiners.mustParseInt(text); item.setText(7, Integer.toString(roi.height)); break;
-				case 8: roi.y_binning = OneLiners.mustParseInt(text); item.setText(8, Integer.toString(roi.y_binning)); break;
+				case 6: roi.y = Algorithms.mustParseInt(text); item.setText(6, Integer.toString(roi.y)); break;
+				case 7: roi.height = Algorithms.mustParseInt(text); item.setText(7, Integer.toString(roi.height)); break;
+				case 8: roi.y_binning = Algorithms.mustParseInt(text); item.setText(8, Integer.toString(roi.y_binning)); break;
 				
 			}
 
diff --git a/src/imageProc/sources/capture/picam/swt/SimpleSettingsPanel.java b/src/imageProc/sources/capture/picam/swt/SimpleSettingsPanel.java
index 6b1620cea8f14433a7f081e4944636e189d99edb..e93b5698885d1e1914762f17b6fcad754011689e 100644
--- a/src/imageProc/sources/capture/picam/swt/SimpleSettingsPanel.java
+++ b/src/imageProc/sources/capture/picam/swt/SimpleSettingsPanel.java
@@ -22,6 +22,10 @@ import imageProc.sources.capture.picam.PicamSource;
 import imageProc.sources.capture.picam.PicamConfig.Parameter;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import picamJNI.PICamDefs;
 import picamJNI.PICamParameters;
 
@@ -240,7 +244,7 @@ public class SimpleSettingsPanel {
 			combo.add(param.enumStrings[i]);			
 			if((param.type == PICamDefs.valueType_Enumeration && i == ((Number)param.value).intValue())
 				|| (param.type == PICamDefs.valueType_FloatingPoint && 
-				     OneLiners.mustParseDouble(param.enumStrings[i]) == ((Number)param.value).doubleValue())){
+				     Algorithms.mustParseDouble(param.enumStrings[i]) == ((Number)param.value).doubleValue())){
 				combo.select(selIdx);
 			}
 			selIdx++;
@@ -288,7 +292,7 @@ public class SimpleSettingsPanel {
 		
 		Parameter adcSpeedFeature = config.getFeature("AdcSpeed");
 		if(adcSpeedFeature != null && adcSpeedFeature.enumStrings != null){
-			adcSpeedFeature.value = OneLiners.mustParseDouble(adcSpeedCombo.getText());
+			adcSpeedFeature.value = Algorithms.mustParseDouble(adcSpeedCombo.getText());
 			adcSpeedFeature.toSet = true;
 		}
 				
@@ -300,7 +304,7 @@ public class SimpleSettingsPanel {
 			readoutModeFeature.toSet = true;
 		}
 		
-		double expTime = OneLiners.mustParseDouble(exposureLengthTextbox.getText());
+		double expTime = Algorithms.mustParseDouble(exposureLengthTextbox.getText());
 		config.setFeature("ExposureTime", expTime);
 		exposureLengthTextbox.setText(Double.toString(expTime));
 		
diff --git a/src/imageProc/sources/capture/pylon/PylonConfig.java b/src/imageProc/sources/capture/pylon/PylonConfig.java
index 77cef6e8a6b37a38eecb62aa7e543db14c5ddc3f..cc43dc1905296a85632deda8b53cea31ba2bab68 100644
--- a/src/imageProc/sources/capture/pylon/PylonConfig.java
+++ b/src/imageProc/sources/capture/pylon/PylonConfig.java
@@ -11,6 +11,10 @@ import java.util.TreeMap;
 import imageProc.sources.capture.base.CaptureConfig;
 import imageProc.sources.capture.picam.PicamConfig.Parameter;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** Configuration for Pylon SDK cameras
  *  
diff --git a/src/imageProc/sources/capture/pylon/PylonSource.java b/src/imageProc/sources/capture/pylon/PylonSource.java
index db528c72f7062cb02a33cce22212cf285f575048..4d3b2acf975119ef68c42c3033ee022fbd32855f 100644
--- a/src/imageProc/sources/capture/pylon/PylonSource.java
+++ b/src/imageProc/sources/capture/pylon/PylonSource.java
@@ -27,6 +27,10 @@ import imageProc.sources.capture.picam.PicamConfig;
 import imageProc.sources.capture.pylon.swt.PylonSWTControl;
 import mds.GMDSFetcher;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import signals.gmds.GMDSSignal;
 
 /** Sensicam Image Source.
@@ -269,7 +273,7 @@ public class PylonSource extends CaptureSource {
 	@Override
 	public boolean setConfigParameter(String param, String value) {
 		if(param.equals("runLength")){
-			double runLengthSecs = OneLiners.mustParseDouble(value);
+			double runLengthSecs = Algorithms.mustParseDouble(value);
 			config.nImagesToAllocate = (int)(runLengthSecs * 1000000.0 / config.frameTimeUS + 0.5);
 			return true;
 		}
diff --git a/src/imageProc/sources/capture/pylon/swt/SimpleSettingsPanel.java b/src/imageProc/sources/capture/pylon/swt/SimpleSettingsPanel.java
index 9124ee2ecf09f90f86c31ac803ca3edaae2febf2..a5ab340017f4526b62144a7561ee829c4445ecc9 100644
--- a/src/imageProc/sources/capture/pylon/swt/SimpleSettingsPanel.java
+++ b/src/imageProc/sources/capture/pylon/swt/SimpleSettingsPanel.java
@@ -19,6 +19,10 @@ import imageProc.sources.capture.pylon.PylonConfig;
 import imageProc.sources.capture.pylon.PylonSource;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 public class SimpleSettingsPanel {
 	public static final double log2 = FastMath.log(2);
@@ -105,8 +109,8 @@ public class SimpleSettingsPanel {
 				
 		config.continuous = continuousButton.getSelection();
 		
-		config.exposureTimeUS = OneLiners.mustParseInt(exposureLengthTextbox.getText());
-		config.frameTimeUS = OneLiners.mustParseInt(frameTimeTextbox.getText());
+		config.exposureTimeUS = Algorithms.mustParseInt(exposureLengthTextbox.getText());
+		config.frameTimeUS = Algorithms.mustParseInt(frameTimeTextbox.getText());
 		
 	}
 	
diff --git a/src/imageProc/sources/capture/sensicam/SensicamSource.java b/src/imageProc/sources/capture/sensicam/SensicamSource.java
index 90358a116adfd5c66c263ac8aa6dbb38d6c864e3..3f61a1c1f8429b1a9b9cd319527d747e3e179168 100644
--- a/src/imageProc/sources/capture/sensicam/SensicamSource.java
+++ b/src/imageProc/sources/capture/sensicam/SensicamSource.java
@@ -14,6 +14,10 @@ import imageProc.sources.capture.base.CaptureConfig;
 import imageProc.sources.capture.base.CaptureSource;
 import imageProc.sources.capture.pco.PCOCamConfig;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** Sensicam Image Source. 
  * All the actual driver'ey code is in the thread in SensicamCapture
@@ -188,7 +192,7 @@ public class SensicamSource extends CaptureSource {
 	@Override
 	public boolean setConfigParameter(String param, String value) {
 		if(param.equals("runLength")){
-			double runLengthSecs = OneLiners.mustParseDouble(value);
+			double runLengthSecs = Algorithms.mustParseDouble(value);
 			config.nImagesToCapture = (int)(runLengthSecs * 1000.0 / bestGuessFrameTimeMS() + 0.5);
 			return true;
 		}
diff --git a/src/imageProc/sources/sim/dshGen/DSHGenSWTControl.java b/src/imageProc/sources/sim/dshGen/DSHGenSWTControl.java
index d7ee1a28ed36b8bcf0715f0960d969332fc638a2..f45471fa267d8f04d2c0ed6fba279ae86923a71e 100644
--- a/src/imageProc/sources/sim/dshGen/DSHGenSWTControl.java
+++ b/src/imageProc/sources/sim/dshGen/DSHGenSWTControl.java
@@ -25,6 +25,10 @@ import imageProc.core.ImagePipeController;
 import imageProc.core.ImgPipe;
 import imageProc.core.ImgSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** SWT Composite for controlling a NoiseGenSource */
 public class DSHGenSWTControl implements ImagePipeController {
@@ -112,7 +116,7 @@ public class DSHGenSWTControl implements ImagePipeController {
 		for(int i=0; i < itemNames.length; i++){
 			TableItem tableItem = table.getItem(i);
 			for(int j=0; j < (colNames.length-1); j++)
-				cfgData[j][i] = OneLiners.mustParseDouble(tableItem.getText(j+1));
+				cfgData[j][i] = Algorithms.mustParseDouble(tableItem.getText(j+1));
 			cfgData[3][i] *= Math.PI / 180; 
 		};
 		
@@ -139,14 +143,14 @@ public class DSHGenSWTControl implements ImagePipeController {
 						public void handleEvent (final Event e) {
 							switch (e.type) {
 							case SWT.FocusOut:
-								item.setText(column, Double.toString(OneLiners.mustParseDouble(text.getText())));
+								item.setText(column, Double.toString(Algorithms.mustParseDouble(text.getText())));
 								//checkTable();
 								text.dispose ();
 								break;
 							case SWT.Traverse:
 								switch (e.detail) {
 								case SWT.TRAVERSE_RETURN:
-									item.setText(column, Double.toString(OneLiners.mustParseDouble(text.getText())));
+									item.setText(column, Double.toString(Algorithms.mustParseDouble(text.getText())));
 									//checkTable();
 									//FALL THROUGH
 								case SWT.TRAVERSE_ESCAPE:
diff --git a/src/imageProc/sources/sim/platesGen/PlatesGenSWTControl.java b/src/imageProc/sources/sim/platesGen/PlatesGenSWTControl.java
index 335f46cfced29eefeaeb67860a3ff5380514e8c9..8f10d25db983673520510f5bccd9b34243746594 100644
--- a/src/imageProc/sources/sim/platesGen/PlatesGenSWTControl.java
+++ b/src/imageProc/sources/sim/platesGen/PlatesGenSWTControl.java
@@ -24,6 +24,10 @@ import imageProc.core.ImagePipeController;
 import imageProc.core.ImgPipe;
 import imageProc.core.ImgSource;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 
 /** SWT Composite for controlling a PlatesGenSource */
 public class PlatesGenSWTControl implements ImagePipeController {
@@ -205,19 +209,19 @@ public class PlatesGenSWTControl implements ImagePipeController {
 		
 		
 		
-		int nImages = (int)OneLiners.mustParseDouble(propsTable.getItem(0).getText(1));
-		int width = (int)OneLiners.mustParseDouble(propsTable.getItem(1).getText(1));
-		int height = (int)OneLiners.mustParseDouble(propsTable.getItem(2).getText(1));
+		int nImages = (int)Algorithms.mustParseDouble(propsTable.getItem(0).getText(1));
+		int width = (int)Algorithms.mustParseDouble(propsTable.getItem(1).getText(1));
+		int height = (int)Algorithms.mustParseDouble(propsTable.getItem(2).getText(1));
 
-		double pixelSize = OneLiners.mustParseDouble(propsTable.getItem(3).getText(1)) * 1e-6;
-		double focalLength = OneLiners.mustParseDouble(propsTable.getItem(4).getText(1)) * 1e-3;
-		double polAng = OneLiners.mustParseDouble(propsTable.getItem(5).getText(1)) * Math.PI/180;
-		double elecNoise = OneLiners.mustParseDouble(propsTable.getItem(6).getText(1));
+		double pixelSize = Algorithms.mustParseDouble(propsTable.getItem(3).getText(1)) * 1e-6;
+		double focalLength = Algorithms.mustParseDouble(propsTable.getItem(4).getText(1)) * 1e-3;
+		double polAng = Algorithms.mustParseDouble(propsTable.getItem(5).getText(1)) * Math.PI/180;
+		double elecNoise = Algorithms.mustParseDouble(propsTable.getItem(6).getText(1));
 		
 		int nCmpts=0;
 		for(int i=0; i < (itemNames1.length-firstComponentEntry); i++) 
-			//if(OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(1)) > 0)
-			if(OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(1)) != 0)
+			//if(Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(1)) > 0)
+			if(Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(1)) != 0)
 				nCmpts++;
 		
 		double inputAmp[] = new double[nCmpts];
@@ -226,13 +230,13 @@ public class PlatesGenSWTControl implements ImagePipeController {
 		double inputEllip[] = new double[nCmpts];
 		int k=0;
 		for(int i=0; i < (itemNames1.length-firstComponentEntry); i++){
-			double en = OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(1));
-			double amp = OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(2));
+			double en = Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(1));
+			double amp = Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(2));
 			if(en != 0 && amp > 0){
 				inputAmp[k] = amp;
-				inputWavelen[k] = OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(3)) * 1e-9;
-				inputPolAng[k] = OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(4)) * Math.PI/180;
-				inputEllip[k] = OneLiners.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(5))  * Math.PI/180;
+				inputWavelen[k] = Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(3)) * 1e-9;
+				inputPolAng[k] = Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(4)) * Math.PI/180;
+				inputEllip[k] = Algorithms.mustParseDouble(propsTable.getItem(firstComponentEntry+i).getText(5))  * Math.PI/180;
 				k++;
 			}
 		}
@@ -243,7 +247,7 @@ public class PlatesGenSWTControl implements ImagePipeController {
 			TableItem tableItem = platesTable.getItem(i);
 						
 			for(int j=0; j < (colNames2.length-1); j++)
-				plateInfo[i][j] = OneLiners.mustParseDouble(tableItem.getText(j+1));
+				plateInfo[i][j] = Algorithms.mustParseDouble(tableItem.getText(j+1));
 			
 			plateInfo[i][1] *= 1e-3; //in mm
 			plateInfo[i][4] *= Math.PI / 180;
@@ -283,7 +287,7 @@ public class PlatesGenSWTControl implements ImagePipeController {
 						public void handleEvent (final Event e) {
 							switch (e.type) {
 							case SWT.FocusOut:
-								item.setText(column, Double.toString(OneLiners.mustParseDouble(text.getText())));
+								item.setText(column, Double.toString(Algorithms.mustParseDouble(text.getText())));
 								//checkTable();
 								text.dispose ();
 								System.out.println("Text destroy");
@@ -291,7 +295,7 @@ public class PlatesGenSWTControl implements ImagePipeController {
 							case SWT.Traverse:
 								switch (e.detail) {
 								case SWT.TRAVERSE_RETURN:
-									item.setText(column, Double.toString(OneLiners.mustParseDouble(text.getText())));
+									item.setText(column, Double.toString(Algorithms.mustParseDouble(text.getText())));
 									//checkTable();
 									//FALL THROUGH
 								case SWT.TRAVERSE_ESCAPE:
@@ -301,7 +305,7 @@ public class PlatesGenSWTControl implements ImagePipeController {
 								}
 								break;
 							case SWT.Modify:
-								item.setText(column, Double.toString(OneLiners.mustParseDouble(text.getText())));
+								item.setText(column, Double.toString(Algorithms.mustParseDouble(text.getText())));
 								break;							
 							}
 						}
diff --git a/src/imageProc/sources/sim/platesGen/PlatesGenSource.java b/src/imageProc/sources/sim/platesGen/PlatesGenSource.java
index aa2fa52047baac1af1869cfc304fb5164530c77d..9ce10e061919920673d6290737f0b7bba19e7cb0 100644
--- a/src/imageProc/sources/sim/platesGen/PlatesGenSource.java
+++ b/src/imageProc/sources/sim/platesGen/PlatesGenSource.java
@@ -14,6 +14,10 @@ import imageProc.core.ImgPipe;
 import imageProc.core.ImgSource;
 import net.jafama.FastMath;
 import oneLiners.OneLiners;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
+import algorithmrepository.Algorithms;
+import algorithmrepository.Mat;
 import otherSupport.RandomManager;
 
 /** Simple simulation of a set of plates, polariser and lens using
@@ -95,8 +99,8 @@ public class PlatesGenSource extends ImgPipe implements ImgSource {
 			plateRight[iP] = Util.cross(plateNorm[iP], plateUp[iP]);
 			
 
-			plateNorm[iP] = OneLiners.rotateVectorAroundAxis(plateTiltPerp, plateUp[iP], plateNorm[iP]);
-			plateRight[iP] = OneLiners.rotateVectorAroundAxis(plateTiltPerp, plateUp[iP], plateRight[iP]);
+			plateNorm[iP] = Algorithms.rotateVectorAroundAxis(plateTiltPerp, plateUp[iP], plateNorm[iP]);
+			plateRight[iP] = Algorithms.rotateVectorAroundAxis(plateTiltPerp, plateUp[iP], plateRight[iP]);
 		}