TODO: refactor buf_* methods here TODO: move all refinements into a separate file / helper file. refinements for cleaner syntax / speed / memory optimizations