split into .h files for testing