break everything in the effort to split functions up