Component-based design