added abstract memory interface