allow types to be passed as argument