Added loads of documentation
Added comments