Adding some documentation.
Adding some comments. Cleaning up demos. Adding some exception throwing.