Perhaps we should use a direct buffer?