signals fixes + refactoring