rearranged some classes to get rid of the circular deps