records - done
lazy eval - done