autodetect input type