refactored List to a type
made the default copy overridable