signals with functions