can buffer struct functional