#2: make welcome callback optional