unique_value is more flexible
permanent object marking fix
permanent_object_ptr and helper function