Major UI Additions + Documentation

All public methods and some private methods have been documented
(although I can't write documentation very well). UI is taking shape.
Still feature incomplete.