input prototype