Abstract module version logic so that it can be overwritten (refs GH-320)