recording deletes in rec_len, instead of the unused last 16 bits
stopped needlessly recalculating fls.length
removed the STR type, now the clients are responsible for encoding/decoding bytes from/to strings