Support three generic input types