second pass over shared abstractions