def programming

The key is to acknowledge from the start that you have no idea how this will grow. When you accept that you don't know everything, you begin to design the system defensively... You should spend most of your time thinking about interfaces rather than implementations.

Built with using

Source code available @ githubpull requests are more than welcome ;-)