Switched to a struct based approach for fancier templaty fun.