add delegate & fix asyncConnect