supporting more types