Adding public and non-public functionality
Pretty much all of the functionality is there. I also changed the output
slightly but it is much better now