contract ProxyWithRegistry is ProxyWithRegistryInterface {
    /**
     *  Returns actual address of the implementation contract from current registry
     *  @return registry Address of the registry
     */
    function _pTokenImplementation() internal view override returns (address) {
        return RegistryInterface(registry).pTokenImplementation();
    }

    function _setRegistry(address _registry) internal override {
        registry = _registry;
    }
}
function _pTokenImplementation() internal view override returns (address) {
    return RegistryInterface(registry).pTokenImplementation();
}

/**
 *  Returns actual address of the implementation contract from current registry
 *  @return registry Address of the registry
 */