!U WIP refactoring

!U WIP refactoring