Version module addition

Thanks to @tyrauber for this PR. Just had to rebase to get the tests working.