Task #32 - implemented multiple type templates (not fully tested yet)