reparent checks if the new parent exists (would insert otherwise)
reparent no longer checks if the new parent is source (only one caller
needed it -> only that caller checks it)
minor improvements in naming and comments