Rewriting encapsulation, cleaning up formatting, adding a few new method/tweaks