Many refactorizations and improved templates, still a long way to go though :)