Improved Error Handling

Allows errors to correctly bubble up for the user.

Fixes #2