Помогите спроектировать программу. Не могу сделать код логически правильным
В общем есть класс, назовем его FTP, в нем методы ConnectFTP, CompareFiles и Download Files и форма которая вызывает метод ConnectFTP по нажатию кнопки. Этот метод, который вызывает кнопка из формы, вызывает другой метод CompareFiles, который потом вызывает DownloadFiles. Мне кажется этот код, который я написал, отвратительным, но я хочу придерживаться этих трех методов. Первое что мне бросается в глаза - это то, что я вызываю скачивание через "ConnectFTP". Это не отражает сути, но я не знаю как это правильно спроектировать. Нужно запускать из формы например так DownloadFiles(); и чтобы этот метод вызвал в начале ConnectFTP, потом CompareFiles и только потом начал выполняться сам. Прошу обратить внимание на то, что методы асинхронные) Если это важно.