pretty messy, needs tidy. positions all relative to each other in the gui components