move all ui stuff into a separate module