implement input processor