introduce signals and slots