modify interface and add executor