diff --git a/dataprocessing/plotdpsim.py b/dataprocessing/plotdpsim.py
index a438b54450822198047daa85f2888b6013380525..759b55e375c815189fea98524200b425a7eadeeb 100644
--- a/dataprocessing/plotdpsim.py
+++ b/dataprocessing/plotdpsim.py
@@ -3,6 +3,7 @@ from .plottools import *
 from .calc import *
 import matplotlib
 import matplotlib.pyplot as plt
+from scipy.interpolate import interp1d
 matplotlib.rcParams.update({'font.size': 8})
 
 def plot_dpsim_abs_diff(filename1, label1, node1, filename2, label2, node2):
@@ -143,8 +144,297 @@ def plot_dpsim_abs_single(filename, node):
     plt.grid(True)
     plt.show()
 
-def main():
-    plot_dpsim_single()
 
-if __name__ == "__main__":
-    main()
\ No newline at end of file
+def plotNodeVoltageInterpDpRef(filenameRef, filenameDP, node):
+    node = node - 1
+    dfRef = pd.read_csv(filenameRef, header=None)
+    dfDP = pd.read_csv(filenameDP, header=None)
+
+    if (dfRef.shape[1] - 1) < node or node < 0:
+        print('Node not available')
+        exit()
+
+    if (dfDP.shape[1] - 1) / 2 < node or node < 0:
+        print('Node not available')
+        exit()
+
+    # Ref
+    timeRef = np.array(dfRef.ix[:, 0])
+    voltageRef = np.array(dfRef.ix[:, node + 1])
+
+    # DP interpolated
+    timeDP = np.array(dfDP.ix[:, 0])
+    voltageReDP = np.array(dfDP.ix[:, node + 1])
+    voltageImDP = np.array(dfDP.ix[:, int((dfDP.shape[1] - 1) / 2 + node + 1)])
+
+    interpTime = np.arange(dfDP.ix[0, 0], dfDP.ix[dfDP.shape[0] - 1, 0], 0.00005)
+    fVoltageRe = interp1d(timeDP, voltageReDP)
+    fVoltageIm = interp1d(timeDP, voltageImDP)
+    interpVoltageRe = fVoltageRe(interpTime)
+    interpVoltageIm = fVoltageIm(interpTime)
+
+    voltageShiftDPInterp = interpVoltageRe * np.cos(2 * np.pi * 50 * interpTime) - interpVoltageIm * np.sin(
+        2 * np.pi * 50 * interpTime)
+    voltageAbsDP = np.sqrt(voltageReDP ** 2 + voltageImDP ** 2)
+
+    fig, ax1 = plt.subplots()
+    ax1.plot(timeRef, voltageRef, 'm:', label='Ref')
+    ax1.plot(interpTime, voltageShiftDPInterp, 'b--', label='DP interp')
+    ax1.plot(timeDP, voltageAbsDP, 'r-', label='DP abs')
+
+    # Now add the legend with some customizations.
+    legend = ax1.legend(loc='lower right', shadow=True)
+
+    # The frame is matplotlib.patches.Rectangle instance surrounding the legend.
+    frame = legend.get_frame()
+    frame.set_facecolor('0.90')
+
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('mag [V]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotNodeVoltageDpEmtRef(filenameRef, filenameDP, filenameEMT, node):
+    node = node - 1
+    dfRef = pd.read_csv(filenameRef, header=None)
+    dfEMT = pd.read_csv(filenameEMT, header=None)
+    dfDP = pd.read_csv(filenameDP, header=None)
+
+    if (dfRef.shape[1] - 1) < node or node < 0:
+        print('Node not available')
+        exit()
+
+    if (dfEMT.shape[1] - 1) < node or node < 0:
+        print('Node not available')
+        exit()
+
+    if (dfDP.shape[1] - 1) / 2 < node or node < 0:
+        print('Node not available')
+        exit()
+
+    # Ref
+    timeRef = np.array(dfRef.ix[:, 0])
+    voltageRef = np.array(dfRef.ix[:, node + 1])
+
+    # EMT
+    timeEMT = np.array(dfEMT.ix[:, 0])
+    voltageEMT = np.array(dfEMT.ix[:, node + 1])
+
+    # DP
+    timeDP = np.array(dfDP.ix[:, 0])
+    voltageReDP = np.array(dfDP.ix[:, node + 1])
+    voltageImDP = np.array(dfDP.ix[:, int((dfDP.shape[1] - 1) / 2 + node + 1)])
+    voltageAbsDP = np.sqrt(voltageReDP ** 2 + voltageImDP ** 2)
+    voltageShiftDP = voltageReDP * np.cos(2 * np.pi * 50 * timeDP) - voltageImDP * np.sin(2 * np.pi * 50 * timeDP)
+
+    fig, ax1 = plt.subplots()
+    ax1.plot(timeRef, voltageRef, 'm:', label='Ref')
+    ax1.plot(timeEMT, voltageEMT, 'g--', label='EMT')
+    ax1.plot(timeDP, voltageShiftDP, 'b--', label='DP shift')
+    ax1.plot(timeDP, voltageAbsDP, 'r-', label='DP abs')
+
+    # Now add the legend with some customizations.
+    legend = ax1.legend(loc='lower right', shadow=True)
+
+    # The frame is matplotlib.patches.Rectangle instance surrounding the legend.
+    frame = legend.get_frame()
+    frame.set_facecolor('0.90')
+
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('mag [V]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotNodeVoltageDpEmt(filenameDP, filenameEMT, node):
+    node = node - 1
+    dfEMT = pd.read_csv(filenameEMT, header=None)
+    dfDP = pd.read_csv(filenameDP, header=None)
+
+    if (dfEMT.shape[1] - 1) < node or node < 0:
+        print('Node not available')
+        exit()
+
+    if (dfDP.shape[1] - 1) / 2 < node or node < 0:
+        print('Node not available')
+        exit()
+
+    # EMT
+    timeEMT = np.array(dfEMT.ix[:, 0])
+    voltageEMT = np.array(dfEMT.ix[:, node + 1])
+
+    # DP
+    timeDP = np.array(dfDP.ix[:, 0])
+    voltageReDP = np.array(dfDP.ix[:, node + 1])
+    voltageImDP = np.array(dfDP.ix[:, int((dfDP.shape[1] - 1) / 2 + node + 1)])
+    voltageAbsDP = np.sqrt(voltageReDP ** 2 + voltageImDP ** 2)
+    voltageShiftDP = voltageReDP * np.cos(2 * np.pi * 50 * timeDP) - voltageImDP * np.sin(2 * np.pi * 50 * timeDP)
+
+    fig, ax1 = plt.subplots()
+    ax1.plot(timeEMT, voltageEMT, 'g--', label='EMT')
+    ax1.plot(timeDP, voltageShiftDP, 'b--', label='DP shift')
+    ax1.plot(timeDP, voltageAbsDP, 'r-', label='DP abs')
+
+    # Now add the legend with some customizations.
+    legend = ax1.legend(loc='lower right', shadow=True)
+
+    # The frame is matplotlib.patches.Rectangle instance surrounding the legend.
+    frame = legend.get_frame()
+    frame.set_facecolor('0.90')
+
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('mag [V]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotEmtNodeResults(filename, node):
+    node = node - 1
+    df = pd.read_csv(filename, header=None)
+    print(df.shape)
+
+    if (df.shape[1] - 1) < node or node < 0:
+        print('Node not available')
+        exit()
+
+    time = np.array(df.ix[:, 0])
+    voltage = np.array(df.ix[:, node + 1])
+
+    fig, ax1 = plt.subplots()
+    ax1.plot(time, voltage, 'b-')
+    # plt.yticks(np.arange(-10, 10, 1.0))
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('mag [V] or [A]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotNodeResults(filename, node):
+    node = node - 1
+    df = pd.read_csv(filename, header=None)
+    print(df.shape)
+
+    if (df.shape[1] - 1) / 2 < node or node < 0:
+        print('Node not available')
+        exit()
+
+    time = np.array(df.ix[:, 0])
+    voltageRe = np.array(df.ix[:, node + 1])
+    voltageIm = np.array(df.ix[:, int((df.shape[1] - 1) / 2 + node + 1)])
+
+    voltage = np.sqrt(voltageRe ** 2 + voltageIm ** 2)
+    voltageEmt = voltageRe * np.cos(2 * np.pi * 50 * time) - voltageIm * np.sin(2 * np.pi * 50 * time)
+    fig, ax1 = plt.subplots()
+    ax1.plot(time, voltageEmt, 'b-', time, voltage, 'r-')
+    # plt.yticks(np.arange(-10, 10, 1.0))
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('mag [V] or [A]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotInterpolatedNodeResults(filename, node):
+    node = node - 1
+    df = pd.read_csv(filename, header=None)
+    print(df.shape)
+
+    if (df.shape[1] - 1) / 2 < node or node < 0:
+        print('Node not available')
+        exit()
+
+    time = np.array(df.ix[:, 0])
+    voltageRe = np.array(df.ix[:, node + 1])
+    voltageIm = np.array(df.ix[:, int((df.shape[1] - 1) / 2 + node + 1)])
+
+    interpTime = np.arange(df.ix[0, 0], df.ix[df.shape[0] - 1, 0], 0.00005)
+    fVoltageRe = interp1d(time, voltageRe)
+    fVoltageIm = interp1d(time, voltageIm)
+
+    interpVoltageRe = fVoltageRe(interpTime)
+    interpVoltageIm = fVoltageIm(interpTime)
+
+    voltageMeas = np.sqrt(voltageRe ** 2 + voltageIm ** 2)
+    voltage = np.sqrt(interpVoltageRe ** 2 + interpVoltageIm ** 2)
+    voltageEmt = interpVoltageRe * np.cos(2 * np.pi * 50 * interpTime) - interpVoltageIm * np.sin(
+        2 * np.pi * 50 * interpTime)
+    fig, ax1 = plt.subplots()
+    ax1.plot(interpTime, voltageEmt, 'b-')
+    ax1.plot(time, voltageMeas, 'r-')
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('mag [V] or [A]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotResultsInterfacedInductor(filename, node):
+    node = node - 1
+    df = pd.read_csv(filename, header=None)
+    print(df.shape)
+
+    if (df.shape[1] - 1) / 2 < node or node < 0:
+        print('Voltage not available')
+        exit()
+
+    time = np.array(df.ix[:, 0])
+    voltageRe = np.array(df.ix[:, node + 1])
+    voltageIm = np.array(df.ix[:, int((df.shape[1] - 1) / 2 + node + 1)])
+
+    voltage = np.sqrt(voltageRe ** 2 + voltageIm ** 2)
+    voltageEmt = voltageRe * np.cos(2 * np.pi * 50 * time) - voltageIm * np.sin(2 * np.pi * 50 * time)
+    fig, ax1 = plt.subplots()
+    ax1.plot(time, voltageEmt, 'b-', time, voltage, 'r-')
+    plt.yticks(np.arange(-10, 10, 1.0))
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('voltage [V]')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotResultsSynGenUnitTest(filename, node1, node2, node3):
+    node1 = node1 - 1
+    node2 = node2 - 1
+    node3 = node3 - 1
+    df = pd.read_csv(filename, header=None)
+    print(df.shape)
+
+    if (df.shape[1] - 1) / 2 < node1 or node1 < 0 or \
+                            (df.shape[1] - 1) / 2 < node2 or node2 < 0 or \
+                            (df.shape[1] - 1) / 2 < node3 or node3 < 0:
+        print('Voltage not available')
+        exit()
+
+    time = np.array(df.ix[:, 0])
+    mag1 = np.array(df.ix[:, node1 + 1])
+    mag2 = np.array(df.ix[:, node2 + 1])
+    mag3 = np.array(df.ix[:, node3 + 1])
+
+    fig, ax1 = plt.subplots()
+    ax1.plot(time, mag1, 'b-', time, mag2, 'r-', time, mag3, 'g-')
+    # ax1.plot(time, voltageEmt, 'b-', time, voltage, 'r-')
+    # plt.yticks(np.arange(-10, 10, 1.0))
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('Magnitude')
+    ax1.grid(True)
+    plt.show()
+
+
+def plotResultsSynGenUnitTestVar(filename, varNum):
+    df = pd.read_csv(filename, header=None)
+    print(df.shape)
+
+    if (df.shape[1]) < varNum or varNum < 0:
+        print('Variable not available')
+        exit()
+
+    time = np.array(df.ix[:, 0])
+    mag = np.array(df.ix[:, varNum])
+
+    fig, ax1 = plt.subplots()
+    ax1.plot(time, mag, 'b-')
+    # plt.yticks(np.arange(-10, 10, 1.0))
+    ax1.set_xlabel('time [s]')
+    ax1.set_ylabel('Magnitude')
+    ax1.grid(True)
+    plt.show()
+
diff --git a/dataprocessing/plotdpsim_deprecated.py b/dataprocessing/plotdpsim_deprecated.py
deleted file mode 100644
index a022ed2a3e2c7d084a7de68d5fa33776eeb9cb56..0000000000000000000000000000000000000000
--- a/dataprocessing/plotdpsim_deprecated.py
+++ /dev/null
@@ -1,290 +0,0 @@
-import numpy as np
-import matplotlib.pyplot as plt
-import pandas as pd
-from scipy.interpolate import interp1d
-
-def plotNodeVoltageInterpDpRef(filenameRef, filenameDP, node):
-	node = node - 1
-	dfRef = pd.read_csv(filenameRef, header=None)
-	dfDP = pd.read_csv(filenameDP, header=None)
-	
-	if (dfRef.shape[1] - 1) < node or node < 0:
-		print('Node not available')
-		exit()
-		
-	if (dfDP.shape[1] - 1) / 2 < node or node < 0:
-		print('Node not available')
-		exit()
-	
-	# Ref
-	timeRef = np.array(dfRef.ix[:,0])
-	voltageRef = np.array(dfRef.ix[:,node + 1])
-	
-	#DP interpolated
-	timeDP = np.array(dfDP.ix[:,0])
-	voltageReDP = np.array(dfDP.ix[:,node + 1])
-	voltageImDP = np.array(dfDP.ix[:, int((dfDP.shape[1] - 1) / 2 + node + 1)])
-	
-	interpTime = np.arange(dfDP.ix[0, 0], dfDP.ix[ dfDP.shape[0] - 1, 0], 0.00005)
-	fVoltageRe = interp1d(timeDP, voltageReDP)
-	fVoltageIm = interp1d(timeDP, voltageImDP)
-	interpVoltageRe = fVoltageRe(interpTime)
-	interpVoltageIm = fVoltageIm(interpTime)	
-	
-	voltageShiftDPInterp = interpVoltageRe*np.cos(2*np.pi*50*interpTime) - interpVoltageIm*np.sin(2*np.pi*50*interpTime)
-	voltageAbsDP = np.sqrt(voltageReDP**2+voltageImDP**2)	
-		
-	fig, ax1 = plt.subplots()
-	ax1.plot(timeRef, voltageRef, 'm:', label='Ref')
-	ax1.plot(interpTime, voltageShiftDPInterp, 'b--', label='DP interp')
-	ax1.plot(timeDP, voltageAbsDP, 'r-', label='DP abs')
-	
-	# Now add the legend with some customizations.
-	legend = ax1.legend(loc='lower right', shadow=True)
-
-	# The frame is matplotlib.patches.Rectangle instance surrounding the legend.
-	frame = legend.get_frame()
-	frame.set_facecolor('0.90')
-
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('mag [V]')
-	ax1.grid(True)
-	plt.show()
-
-def plotNodeVoltageDpEmtRef(filenameRef, filenameDP, filenameEMT, node):
-	node = node - 1
-	dfRef = pd.read_csv(filenameRef, header=None)
-	dfEMT = pd.read_csv(filenameEMT, header=None)
-	dfDP = pd.read_csv(filenameDP, header=None)
-	
-	if (dfRef.shape[1] - 1) < node or node < 0:
-		print('Node not available')
-		exit()
-
-	if (dfEMT.shape[1] - 1) < node or node < 0:
-		print('Node not available')
-		exit()
-		
-	if (dfDP.shape[1] - 1) / 2 < node or node < 0:
-		print('Node not available')
-		exit()
-	
-	# Ref
-	timeRef = np.array(dfRef.ix[:,0])
-	voltageRef = np.array(dfRef.ix[:,node + 1])
-	
-	# EMT
-	timeEMT = np.array(dfEMT.ix[:,0])
-	voltageEMT = np.array(dfEMT.ix[:,node + 1])	
-	
-	#DP
-	timeDP = np.array(dfDP.ix[:,0])
-	voltageReDP = np.array(dfDP.ix[:,node + 1])
-	voltageImDP = np.array(dfDP.ix[:, int((dfDP.shape[1] - 1) / 2 + node + 1)])
-	voltageAbsDP = np.sqrt(voltageReDP**2+voltageImDP**2)
-	voltageShiftDP = voltageReDP*np.cos(2*np.pi*50*timeDP) - voltageImDP*np.sin(2*np.pi*50*timeDP)
-		
-	fig, ax1 = plt.subplots()
-	ax1.plot(timeRef, voltageRef, 'm:', label='Ref')
-	ax1.plot(timeEMT, voltageEMT, 'g--', label='EMT')
-	ax1.plot(timeDP, voltageShiftDP, 'b--', label='DP shift')
-	ax1.plot(timeDP, voltageAbsDP, 'r-', label='DP abs')
-	
-	# Now add the legend with some customizations.
-	legend = ax1.legend(loc='lower right', shadow=True)
-
-	# The frame is matplotlib.patches.Rectangle instance surrounding the legend.
-	frame = legend.get_frame()
-	frame.set_facecolor('0.90')
-
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('mag [V]')
-	ax1.grid(True)
-	plt.show()
-
-
-def plotNodeVoltageDpEmt(filenameDP, filenameEMT, node):
-	node = node - 1
-	dfEMT = pd.read_csv(filenameEMT, header=None)
-	dfDP = pd.read_csv(filenameDP, header=None)
-
-	if (dfEMT.shape[1] - 1) < node or node < 0:
-		print('Node not available')
-		exit()
-		
-	if (dfDP.shape[1] - 1) / 2 < node or node < 0:
-		print('Node not available')
-		exit()
-	
-	# EMT
-	timeEMT = np.array(dfEMT.ix[:,0])
-	voltageEMT = np.array(dfEMT.ix[:,node + 1])	
-	
-	#DP
-	timeDP = np.array(dfDP.ix[:,0])
-	voltageReDP = np.array(dfDP.ix[:,node + 1])
-	voltageImDP = np.array(dfDP.ix[:, int((dfDP.shape[1] - 1) / 2 + node + 1)])
-	voltageAbsDP = np.sqrt(voltageReDP**2+voltageImDP**2)
-	voltageShiftDP = voltageReDP*np.cos(2*np.pi*50*timeDP) - voltageImDP*np.sin(2*np.pi*50*timeDP)
-		
-	fig, ax1 = plt.subplots()
-	ax1.plot(timeEMT, voltageEMT, 'g--', label='EMT')
-	ax1.plot(timeDP, voltageShiftDP, 'b--', label='DP shift')
-	ax1.plot(timeDP, voltageAbsDP, 'r-', label='DP abs')
-	
-	# Now add the legend with some customizations.
-	legend = ax1.legend(loc='lower right', shadow=True)
-
-	# The frame is matplotlib.patches.Rectangle instance surrounding the legend.
-	frame = legend.get_frame()
-	frame.set_facecolor('0.90')
-
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('mag [V]')
-	ax1.grid(True)
-	plt.show()
-
-def plotEmtNodeResults(filename, node):
-	node = node - 1
-	df = pd.read_csv(filename, header=None)
-	print(df.shape)
-
-	if (df.shape[1] - 1) < node or node < 0:
-		print('Node not available')
-		exit()
-
-	time = np.array(df.ix[:,0])
-	voltage = np.array(df.ix[:,node + 1])	
-	
-	fig, ax1 = plt.subplots()
-	ax1.plot(time, voltage, 'b-')
-	#plt.yticks(np.arange(-10, 10, 1.0))
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('mag [V] or [A]')
-	ax1.grid(True)
-	plt.show()
-
-def plotNodeResults(filename, node):
-	node = node - 1
-	df = pd.read_csv(filename, header=None)
-	print(df.shape)
-
-	if (df.shape[1] - 1) / 2 < node or node < 0:
-		print('Node not available')
-		exit()
-
-	time = np.array(df.ix[:,0])
-	voltageRe = np.array(df.ix[:,node + 1])
-	voltageIm = np.array(df.ix[:, int((df.shape[1] - 1) / 2 + node + 1)])
-
-	voltage = np.sqrt(voltageRe**2+voltageIm**2)
-	voltageEmt = voltageRe*np.cos(2*np.pi*50*time) - voltageIm*np.sin(2*np.pi*50*time)
-	fig, ax1 = plt.subplots()
-	ax1.plot(time, voltageEmt, 'b-', time, voltage, 'r-')
-	#plt.yticks(np.arange(-10, 10, 1.0))
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('mag [V] or [A]')
-	ax1.grid(True)
-	plt.show()
-	
-def plotInterpolatedNodeResults(filename, node):
-	node = node - 1
-	df = pd.read_csv(filename, header=None)
-	print(df.shape)
-
-	if (df.shape[1] - 1) / 2 < node or node < 0:
-		print('Node not available')
-		exit()
-	
-	time = np.array(df.ix[:,0])
-	voltageRe = np.array(df.ix[:,node + 1])
-	voltageIm = np.array(df.ix[:, int((df.shape[1] - 1) / 2 + node + 1)])
-	
-	interpTime = np.arange(df.ix[0, 0], df.ix[ df.shape[0] - 1, 0], 0.00005)
-	fVoltageRe = interp1d(time, voltageRe)
-	fVoltageIm = interp1d(time, voltageIm)
-	
-
-	interpVoltageRe = fVoltageRe(interpTime)
-	interpVoltageIm = fVoltageIm(interpTime)
-	
-	voltageMeas = np.sqrt(voltageRe**2+voltageIm**2)
-	voltage = np.sqrt(interpVoltageRe**2+interpVoltageIm**2)
-	voltageEmt = interpVoltageRe*np.cos(2*np.pi*50*interpTime) - interpVoltageIm*np.sin(2*np.pi*50*interpTime)
-	fig, ax1 = plt.subplots()
-	ax1.plot(interpTime, voltageEmt, 'b-')
-	ax1.plot(time, voltageMeas, 'r-')
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('mag [V] or [A]')
-	ax1.grid(True)
-	plt.show()
-
-def plotResultsInterfacedInductor(filename, node):
-	node = node - 1
-	df = pd.read_csv(filename, header=None)
-	print(df.shape)
-
-	if (df.shape[1] - 1) / 2 < node or node < 0:
-		print('Voltage not available')
-		exit()
-
-	time = np.array(df.ix[:,0])
-	voltageRe = np.array(df.ix[:,node + 1])
-	voltageIm = np.array(df.ix[:, int((df.shape[1] - 1) / 2 + node + 1)])
-
-	voltage = np.sqrt(voltageRe**2+voltageIm**2)
-	voltageEmt = voltageRe*np.cos(2*np.pi*50*time) - voltageIm*np.sin(2*np.pi*50*time)
-	fig, ax1 = plt.subplots()
-	ax1.plot(time, voltageEmt, 'b-', time, voltage, 'r-')
-	plt.yticks(np.arange(-10, 10, 1.0))
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('voltage [V]')
-	ax1.grid(True)
-	plt.show()
-
-def plotResultsSynGenUnitTest(filename, node1, node2, node3):
-	node1 = node1 - 1
-	node2 = node2 - 1
-	node3 = node3 - 1
-	df = pd.read_csv(filename, header=None)
-	print(df.shape)
-
-	if (df.shape[1] - 1) / 2 < node1 or node1 < 0 or \
-	(df.shape[1] - 1) / 2 < node2 or node2 < 0 or \
-	(df.shape[1] - 1) / 2 < node3 or node3 < 0:
-		print('Voltage not available')
-		exit()
-
-	time = np.array(df.ix[:,0])
-	mag1 = np.array(df.ix[:,node1 + 1])
-	mag2 = np.array(df.ix[:,node2 + 1])
-	mag3 = np.array(df.ix[:,node3 + 1])
-
-	fig, ax1 = plt.subplots()
-	ax1.plot(time, mag1, 'b-', time, mag2, 'r-', time, mag3, 'g-')
-	#ax1.plot(time, voltageEmt, 'b-', time, voltage, 'r-')
-	#plt.yticks(np.arange(-10, 10, 1.0))
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('Magnitude')
-	ax1.grid(True)
-	plt.show()
-
-def plotResultsSynGenUnitTestVar(filename, varNum):
-
-	df = pd.read_csv(filename, header=None)
-	print(df.shape)
-
-	if (df.shape[1]) < varNum or varNum < 0:
-		print('Variable not available')
-		exit()
-
-	time = np.array(df.ix[:,0])
-	mag = np.array(df.ix[:,varNum])
-
-	fig, ax1 = plt.subplots()
-	ax1.plot(time, mag, 'b-')
-	#plt.yticks(np.arange(-10, 10, 1.0))
-	ax1.set_xlabel('time [s]')
-	ax1.set_ylabel('Magnitude')
-	ax1.grid(True)
-	plt.show()
diff --git a/dataprocessing/plottools.py b/dataprocessing/plottools.py
index cf23f28bab41eb2c0439bf8389aaf585c0e26ff7..78f083a6f09063a2c8b6397159050eabba4d8a64 100644
--- a/dataprocessing/plottools.py
+++ b/dataprocessing/plottools.py
@@ -20,3 +20,5 @@ def plot_timeseries(figure_id, timeseries, plt_linestyle='-'):
 def set_time_series_labels(timeseries_list, time_series_labels):
     for ts in timeseries_list:
         ts.label = time_series_labels[timeseries_list.index(ts)]
+
+
diff --git a/dataprocessing/timeseries.py b/dataprocessing/timeseries.py
index 358c4390b56cab05afc7770592bca64ba85f458f..7115f4ccfaa9bd7964f800cb35c4b3f7414e40a3 100644
--- a/dataprocessing/timeseries.py
+++ b/dataprocessing/timeseries.py
@@ -1,4 +1,5 @@
 import numpy as np
+import cmath
 
 class TimeSeries:
     """Stores data from different simulation sources.
@@ -44,19 +45,23 @@ class TimeSeries:
         return ts_abs
 
     def abs(self, name):
-        """ Calculate absolute value of complex variable.
-        Assumes the same time steps for both timeseries.
+        """ Calculate absolute value of complex time series.
         """
-        ts_abs = TimeSeries(name, self.time, self.values.abs())
+        abs_values = []
+        for value in self.values:
+            abs_values.append(np.abs(value))
+        ts_abs = TimeSeries(name, self.time, abs_values)
         return ts_abs
 
-    def complex_phase(name, ts_real, ts_imag):
-        """ Calculate absolute value of complex variable.
-        Assumes the same time steps for both timeseries.
+    def phase(self, name):
+        """ Calculate absolute value of complex time series.
         """
-        ts_complex = np.vectorize(complex)(ts_real.values, ts_imag.values)
-        ts_abs = TimeSeries(name, ts_real.time, ts_complex.phase())
-        return ts_abs
+        phase_values = []
+        for value in self.values:
+            phase_values.append(np.angle(value, deg=True))
+        ts_abs = TimeSeries(name, self.time, phase_values)
+        ts_phase = TimeSeries(name, self.time, phase_values)
+        return ts_phase
 
     @staticmethod
     def dyn_phasor_shift_to_emt(name, real, imag, freq):