derivative implemented