Small API improvements and added documentation

Documentation is in the form of comments via the source file

I think I am going to re-factor out the button.