lots of changes, steps into one module -- stable version