implemented first cache