Added a new abstract type, base_memory_type