data-types and bit manipulation