input loop