beginning of feature lowest common ancestor and printer full feature implementation