W.I.P
W.I.P Added tests.