@benbjohnson You pass prevNode into `internalCrate()` since this function will use it to generate `Event`.  I agree that get previousNode in `internalCreate()` function will make the logic a little bit complicated.

How about generating Event and send it to watcher outside internalCreate. We will duplicate some codes, but I really do not want to pass `previousNode` into a `create` function.