typos and some clarification in comments
composite strategy should not extend abstract strategy, instead functions need to be passed onto the selected context