lots of gui functionality added