redisgned a bit the architecture so it's easier to modify everything and especially add new language :)