multiple types support