fix double call delegate bug