making the components more modular for reuse