#24 added feature, but need review and refactoring, because feature has some trouble.