self and other are not really relevant now that this is a separate utility. Suggests left, right ?