using separate constraint class.
added the ability to generate C functions.
added the ability to encode objects into specific languages. added some more test cases.