heavily inspired by http://fabien.potencier.org/article/49/what-is-symfony2 and the official Symfony2 documentation