issue #36: refactor
issue #36: refactor
issue #36: initial implementation
issue #36: docs
Merge branch 'issue_36'