Big ol' refactor to split up the langs and make it easier to add more. Python is broken for now.