Add generics and new module system support