some refactoring, updating module dependdencies and versions, and elaboration in the README