added fully working GUI with tests