This concept allows us to write software which masks away the underlying implementation complexity