Split into a more modular design