The user code should not rely on concrete GraphicsBuffer implementations, but instead of generic abstractions.