DAN30-A. Create a copy constructor and assignment operator for non copyable objects
DCLxx-A. Do not convert a function pointer to a function of a different type
DCL31-C. Ensure every function has a function prototype
MSC05-A. Do not manipulate time_t values directly
MSC09-A Character Encoding - Use Subset of ASCII for Safety