use vector<u8> instead of vector<bool>