make it a bit more modular