All it takes is two contracts: your reward vault contract and your staking token contract.
@camiinthisthang explains in this new video.