introduce the idea of a generic wallet id
migrate GenericWallet() to return a non-pointer
finish migrating to using non-pointer generic wallets