Adding Template System.

We should add a templating system for better flexibility. See Issue #11.