add support for multiple types