split header file and implementation