merge master with refactoring (update refactoring)