Es6

- 使用 generator 重写
- 增加测试用例

#8 
原来应该是给 family 用的