work on domain object, exception handling, and todo