Add error handling, add tests