add bit manipulation