Abstract `template` module as an external dependency.
Update testing code.
Merge pull request #39 from zpbx/template

Abstract `template` module as an external dependency.
Update testing code.
Update testing code.
Add testing code for `action` module.
Merge pull request #40 from zpbx/testing

Update testing code.