add some more builder classes; rename ptr -> buffer