added alternative buffer implementations