rework self.launch