Added more copy constructors, removed cruft and cleaned up preprocessor macros.