trying multimethods instead of book strategy