added fetch with blocks condition

blocks are lazy evaluated while the default value (provided as second argument) is eagerly evaluated