- refactored (to use hpp instead of h for header file extension)