mostly implemented ancestry