seperation of gui and base functionality
1.step still not working