Multiple transfer types

Change the way that the transfer is working so new types of transfer can be added. As an example, SFTP support was added #29