reactored deferreds and extend interface