Header files + data type changes

Separated class declarations and definitions and made some data type
changes for simplicity.