Major reworking, using single data buffer