implemented observer pattern for dealing with updating the realtime displays in the gui, saving me many lines of code and greatly simplifying the logic