tidying up output
Adding some comments
fixed member visibility
Adding more tests