Fix: Put FrameworkTest.php where it was supposed to go.
After step 9, part 1 - Added a dispatcher - which is an example of an observer pattern - to add 'GA CODE' to the response content
After step 9, part 2 - Adding a second listener to our dispatcher with a priority set to execute it in a particular order

“When creating your framework, think about priorities (reserve some
numbers for internal listeners for instance) and document them
thoroughly.” From
http://fabien.potencier.org/article/58/create-your-own-framework-on-top-
of-the-symfony2-components-part-9 .
After step 9, part 3 - Refactored listeners to be in their own classes
After step 9, part 4 - Used subscribers instead of listeners

Using subscribers means that the listener classes now have control over
defining what they listen to.
After step 10, part 1 - Added caching to our page by using HttpKernalInterface
After step 10, part 2 - Set the cache to last for 10 seconds.

From
http://fabien.potencier.org/article/59/create-your-own-framework-on-top-
of-the-symfony2-components-part-10. You can demonstrate this change by
refreshing ‘/is_leap_year/2015’. The random number will only change
every 10 seconds.
After step 11, part 1 - Switching framework to use HttpKernal

The whole series has basically been leading up to the point of what the
HttpKernal is all about. In this part, on
http://fabien.potencier.org/article/60/create-your-own-framework-on-top-
of-the-symfony2-components-part-11, we can remove nearly all of our
code from our Framework class and use HttpKernal to do the heavy
lifting.
After step 11, part 2 - Adding a custom error handler, and a couple other examples of adding listeners

Again, from
http://fabien.potencier.org/article/60/create-your-own-framework-on-top-
of-the-symfony2-components-part-11. To trigger the error, pass a
negative number to the leap year controller, like  “/is_leap_year/-5”.
Added additional examples in comments.
After step 11, part 3 - Added ability to pass a string from a controller instead of a response object

Also removed commented out examples.
After step 12, part 1 - Simplified our front controller and moved code into our framework class
After step 12, part 2 - Added a dependency injector container

Adding the injector gives us the flexibility that we had before the
last step to adjust the dependencies or parameters that our classes get
passed.
After step 12, part 3 - Added parameters in our dependency injector container