use Optional for signal methods instead of null