Add tests, refactor and custom exceptions