cleaner, node-like implementation