if only
added new strategy and new datastructure for the implementation