change: various refactoring