Strategy Pattern.