more cleanup, implement file xfer