Implemented basic constructors ( default, copy, and move )