abstractions to reduce points of failure