Separated into .cpp and .hpp