rework signal/slot and object