implemented visitor pattern for handling polymorphic customer requests