reusability and scalability