added copy constructors and assignment operators