refactor signals