Can you spot any code smells in this code? I'll give you a clue - a spot of Pol(l)ymorphism should improve matters!
Refactor this code, take small steps, run the tests often. See how small and beautiful and polymorphic you can make it.
I made a video about this kata: From Hello Polly! to Polymorphism: Parrot Refactoring Code Kata is FUN.
This code is heavily inspired by one of the examples in Martin Fowler's book "Refactoring". It's a classic, and if it's not on your bookshelf already I suggest you treat yourself to a copy!