refactoring to signals
refactoring to MVVM