use pure to provide input result