First UI stuff, all generated by intellij so excuse the mess