[feature] self ptr