Merged control and menu condition code

The code has been merged, but transference is not fully functioning. Some cleanup is still required.
Hash method is implemented if we override isEqual. I can add block comments to explain what these functions do.