create classmethod
yieldの場合にも対応した