added new header files for a better modularization