再帰のバグを修正
環境の実装を分離