use std::shared_ptr for mapblock storage (not complete)