Added unit tests and GUI