Refactoring and Interface update
Global refactoring