split out bit vector support into a separate module