surface code memory