draft software module -- untested
add software module, including documentation, helper functions and basic unit tests