Expand scope of module

Includes more functionality, tests, and a name change.