improved error msg
now using lazy evaluation