fully functional input