38ですが、何かテクニックのようなものがあればお聞きしたいです。

これで飯食ってはいないので、ベタな処理をすれば書けると思いますが、
きっとスマートなコードにはならないと思います。

プロの方のコード設計を見せて貰えたらと思います。