extract some classes to their own files
Extract date spec helper
Extract merge enumeration