Input factory