Add some more error handling and documentation.
Even more Error Handling! It should work a lot better now.