Builder
  Separates object construction from its representation