うまい具合にyield使ってるね。
問題が問題だから拡張性はないとおもう。