Finish initial port, passes first test

Now time to port the remaining tests