make count cacheable; add GetAll/RandGetAll method