constructors return composites directly