04 refactoring for semantics