better test coverage
lazy evaluation of function arguments