16/17 passing, also added lots of documentation but still not finished.