added SelectionState class for state management
new components