Added a lot more documentation and reorganized the methods.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>