Refactored TransferListener - all logic moved into non-generic subclass and implemented in *.cpp