Almost complete, just a few minor issues to fix and make it perfect