diff --git a/mcc-flow/legacy.py b/mcc-flow/legacy.py
new file mode 100644
index 0000000000000000000000000000000000000000..46b10aeafb6c9065266cf19ec03fb25a0e8a8ce9
--- /dev/null
+++ b/mcc-flow/legacy.py
@@ -0,0 +1,156 @@
+import argparse
+from struct import *
+
+import matplotlib.pyplot as plt
+import numpy as np
+# import soundfile as sf
+from scipy import signal
+
+
+########################################
+########################################
+def notch(data):
+    # Create/view notch filter
+    samp_freq = 250  # Sample frequency (Hz)
+    notch_freq = 50.0  # Frequency to be removed from signal (Hz)
+    quality_factor = 10.0  # Quality factor
+    b_notch, a_notch = signal.iirnotch(notch_freq, quality_factor, samp_freq)
+    # freq, h = signal.freqz(b_notch, a_notch, fs=samp_freq)
+
+    # apply notch filter to signal
+    return signal.filtfilt(b_notch, a_notch, data)
+
+
+######################################
+######################################
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('-i', '--input_file',
+                    required=False,
+                    type=str,
+                    default="test.dat",
+                    metavar="<string>",
+                    help="Input file to be visualized")
+
+# filename = "test.dat"
+
+args = parser.parse_args()
+
+filename = args.input_file
+
+file = open(filename, "rb")
+
+# bin_arr = file.read()
+
+no_packets = unpack('>i', file.read(4))[0]
+
+great_buffer = []
+sound = []
+
+print(f"Number of packets in file: {no_packets}")
+
+packet_struct_header = ">IIBBBBBBBBBBBHHH"
+packet_struct_header_size = 4 + 4 + 10 + 1 + 2 + 2 + 2
+packet_struct_eeg = "i" * 4 * 250 + 3 * "h" * 50 + 3 * "h" * 50
+packet_struct_eeg_size = 4 * 4 * 250 + 3 * 2 * 50 + 3 * 2 * 50
+packet_struct_emg = "i" * 6 * 250 + 3 * "h" * 50 + 3 * "h" * 50 + "h" * 6000 + "h" * 10
+packet_struct_emg_size = 4 * 6 * 250 + 3 * 2 * 50 + 3 * 2 * 50 + 2 * 6000 + 2 * 10
+
+packet_struct_header_s = 2 + 10 + 1 + 1 + 1 + 1
+packet_struct_eeg_s = 250 * 4 + 3 * 50 + 3 * 50
+packet_struct_emg_s = 250 * 6 + 3 * 50 + 3 * 50
+packet_struct_ss_s = 6000 + 10
+
+packet_bin = packet_struct_header + packet_struct_eeg + packet_struct_emg
+packet_bin_size = packet_struct_header_size + packet_struct_eeg_size + packet_struct_emg_size
+
+# no_packets = 60
+for i in range(no_packets):
+    try:
+        packet = [*unpack(packet_bin, file.read(packet_bin_size))]
+    except Exception as e:
+        print(e)
+        print("Got : " + str(len(file.read(packet_bin_size))))
+    great_buffer.append(packet)
+
+print(f"Packet len: {packet_bin_size}")
+print(f" -- header len: {packet_struct_header_size}")
+print(f" -- arc len: {4 * 4 * 250}")
+print(f" -- imu len: {2 * 50}")
+
+print(f"Remaining: {len(file.read())}")
+great_buffer = np.array(great_buffer)
+print(f"Great buffer shape: {great_buffer.shape}")
+
+sound = great_buffer[:,
+        packet_struct_header_s + packet_struct_eeg_s + packet_struct_emg_s:packet_struct_header_s + packet_struct_eeg_s + packet_struct_emg_s + 6000]
+
+arb_gyro = great_buffer[:,
+           packet_struct_header_s + packet_struct_eeg_s + packet_struct_emg_s - 300:packet_struct_header_s + packet_struct_eeg_s + packet_struct_emg_s - 150]
+arb_accel = great_buffer[:,
+            packet_struct_header_s + packet_struct_eeg_s + packet_struct_emg_s - 150:packet_struct_header_s + packet_struct_eeg_s + packet_struct_emg_s]
+
+arc_gyro = great_buffer[:,
+           packet_struct_header_s + packet_struct_eeg_s - 300:packet_struct_header_s + packet_struct_eeg_s - 150]
+arc_accel = great_buffer[:,
+            packet_struct_header_s + packet_struct_eeg_s - 150:packet_struct_header_s + packet_struct_eeg_s]
+
+eeg = great_buffer[:, packet_struct_header_s:packet_struct_header_s + 250 * 4]
+emg = great_buffer[:,
+      packet_struct_header_s + packet_struct_eeg_s:packet_struct_header_s + packet_struct_eeg_s + 250 * 6]
+gsr = great_buffer[:, -10:]
+
+###############
+## Plottable
+##############
+sound_data = np.reshape(sound, (-1,))
+arc_accel = np.reshape(arc_accel, (-1, 3))
+arb_accel = np.reshape(arb_accel, (-1, 3))
+arc_gyro = np.reshape(arc_gyro, (-1, 3))
+arb_gyro = np.reshape(arb_gyro, (-1, 3))
+
+gsr = np.reshape(gsr, (-1,))
+eeg = np.reshape(eeg, (-1, 4))
+eeg = np.array([notch(eeg[:, i]) for i in range(4)])
+emg = np.reshape(emg, (-1, 6))
+emg = np.array([notch(emg[:, i]) for i in range(6)])
+
+# print(f"Plot shape: {sound_data.shape}")
+
+plt.title("GSR")
+plt.plot(gsr)
+plt.show()
+
+plt.title("EMG")
+plt.plot(emg[5])
+plt.show()
+
+plt.title("EEG")
+plt.plot(eeg[0])
+plt.plot(eeg[1])
+plt.plot(eeg[2])
+plt.plot(eeg[3])
+plt.show()
+
+plt.title("ARB Accel")
+plt.plot(arb_accel)
+plt.show()
+
+plt.title("ARB Gyro")
+plt.plot(arb_gyro)
+plt.show()
+
+plt.title("Sound data")
+plt.plot(sound_data)
+plt.show()
+
+# sound_data = (sound_data - np.mean(sound_data)) / (np.max(sound_data) - np.min(sound_data))
+
+# sf.write("audio_recording.wav", sound_data, 6000)
+
+"""
+if __name__ == "__main__":
+   main(sys.argv[1:])
+
+"""