tidy up resize and assign, make sure destruct and construct only called where needed, and prefer STL copy and fill to manual looping