instantiate complex type