add some methods for lazy evaluation