added ancestors and decendants methotds with tests