add signals and slots