implemented input