Added better documentation, code still needs to be cleaned up
Encapsulation update