added method deepRemove