added data structures and bit manipulation