Refactored the main API

Used jms/cg to create the proxy class.
Used CompilerPassInterface to compile the container.