separate out errors into their own file, and make them slightly more helpful

fixes #9