Gutted it, refer to the TODO list to see what the steps should be