support progress & code refactoring