major refactoring, headers separated by data type