### Double trouble Pools are farms that accept user deposits. Pools themselves are particiapting in a "master" farm that pays out rewards to all other pools. Whenever a user calls `claimOnPool()`, the pool goes to master farm to `claimOnMaster()` their reward. Previously, constant weights are represented as shares in the master farm. All pools have the same epoch as the master farm (eg. per block). > updatePool() is the function that updates `accumulatedRewardPerShare` Advantage(s): * Over time, as new pools get added, it is not necessary to call updatePool() on all pools (as opposed to constant weights) * To calculate the rewards that need to be sent one pool is more efficient. Now, even a user could afford paying for that as opposed to an admin. * when sending back the "time reward left-over" to the master farm, even a user could pay for the transaction cost to extend the farm. (this idea needs to be thought through) * It keeps track of rewards that are supposed to be sent to the other pools, even though one pool interacts with the master farm algo * One pool cannot take away rewards of another pool