add clang wrapper
make autogen types immutable