breaking functionality up
some more changes