added more constructors, copy operators, etc