work on new primitives, changed CStr to be backed by ByteString