Twój problem można rozwiązać szablonowo i tradycyjnie… albo podejść do niego przekrojowo i mniej szablonowo.