Divided into .h and .cpp files