Buffer usage

Minor refactoring @xla  @juliusv 
This is another case where a constructor method is questionable since it's only transcribing supplied fields. The caller might as well fill out the fields themselves once `snapshot` is changed the way I suggested (then that field can be omitted, since its zero value will be sufficient).