refactoring
support PersistentEphemeralNode