broke down into cpp and h files