add shared abstractions