JBProjects | Stores project ownership and identifying information. | 
JBTokenStore | Manage token minting, burning, and account balances. | 
JBFundingCycleStore | Manages funding cycle scheduling. | 
JBSplitsStore | Stores splits information for all groups of each project. Projects can create split groups for directing percents of a total token allocation to any address, any other Juicebox project, or any contract that inherits from the IJBSplitAllocator interface. | 
JBPrices | Manages and normalizes price feeds. | 
JBOperatorStore | Stores operator permissions for all addresses. Addresses can give permissions to any other address to take specific indexed actions on their behalf. | 
JBDirectory | Keeps a reference of which terminal contracts each project is currently accepting funds through, and which controller contract is managing each project's tokens and funding cycles. | 
JBController | Stitches together funding cycles and project tokens, making sure all activity is accounted for and correct. | 
JBETHPaymentTerminal | Manages all inflows and outflows of ETH funds into the protocol ecosystem. | 
JBSingleTokenPaymentTerminalStore | Manages all bookkeeping for inflows and outflows of funds from any IJBSingleTokenPaymentTerminal. | 
JBETHERC20ProjectPayer | Sends ETH or ERC20's to a project treasury as it receives direct payments or has it's functions called. | 
JBETHERC20ProjectPayerDeployer | Deploys project payer contracts. | 
JBETHERC20SplitsPayer | Sends ETH or ERC20's to a group of splits as it receives direct payments or has its functions called. | 
JBETHERC20SplitsPayerDeployer | Deploys splits payer contracts. |