Component-based simulation: Hierarchical structures, Modularity, and Reuse