Fixed Header + Virtual Function Errors

- Added proper syntax to header files to make them work
- Fixed issue with virtual function declarations (remember to declare
them as virtual type name() = 0; <— The “=0” is important