organized include directives, and added default and copy constructors