Clean up Go patterns, creational abstract factory, builder, factory method, better use of embedding/aggregation