without listener there is no way to get results so calling operation doesn't make sense. throw IllegalArgument