major structure refactoring
mf