Implementing interchangeable combination strategies with the strategy design pattern