imporved input