added parent pointer