A project for learning. Not because it is easy, but because it is hard :)