some changes so the cache will be filled on access (take, to_a)