Adding BlockChainIO and rethinking the application high level types