Added designated initializer. Refactoring. Improved error handling.