Finished. Just need to make it all efficient