handle complex types better