more flexibility (traits, custom builders)
toArray()