Signal-related function implementations moved to separate file