lazily generate chunks (not taken advantage of yet)