Abstract types for clarity & brevity