refactor modules to use simplified object graph