Due to out-of-gas during deployment, I plan to split one large contract into two: contract A to keep state and is not meant to store any ETH, any state change functions are modified to be allowed to call from contract B only
Contract B is meant to receive/withdraw ETH and be public facing. Its withdraw function will validate the corresponding state in contract A before proceeding with msg.sender.transfer(_validatedAmount).
The question is: Could there be any pitfall of this design to split state and ETH into two contracts this way?