split everything up to make it easier to read