Re-factoring for language support and a cleaner architecture.