decoupling header files from each other, now mostly include free, and fewer dependencies