buffer needs to be zerod