added bit manipulation requirement