handles any input type