going to need to really seperate the ui logic since the code is getting too big to just put it all together.