added some comments
added selection strategy, but not yet using it
implemented selectionStrategy