Como implementar corretamente o método de opção / atualização no plugin jquery?

Eu estou tentando criar um plugin com capacidade de atualizar as opções após a inicialização. Eu comecei com um plugin simples, o que me ajudará a entender a lógica do plugin. Então aqui está:

;(function($) {

    var defaults = {
        message: 'This is default message'
    };

    var options = {};

    var methods = {
        init : function( options ) { 
            options = $.extend(defaults, options);

            return this.each(function() {

                $(this).click(function(){
                    alert(options.message);
                });

            });
        },

        option: function( key, value ){
                    if (val) {
                        options[key] = val;
                    } else {
                        return options[key];
                    }
                }
        };  

    $.fn.clickAlert = function( method ) {
        if ( methods[method] ) {
            return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
            return methods.init.apply( this, arguments );
        } else {
            //some error that method doesnt exist
        }    
    };

})(jQuery);

Como você pode ver, este plugin apenas mostra a mensagem de alerta com texto definido. Além disso, tenho página HTML (onde incluo biblioteca jquery e este plugin) com 2 links:

<a href="#" class="show">SHOW ALERT</a>
<a href="#" class="change">CHANGE ALERT MESSAGE</a>

Eu crio uma instância do plugin 'clickAlert' no link com a classe "show". Quando clico nele, ele mostra a mensagem padrão como eu esperava. Mas eu quero (por exemplo) clicar no link com a classe "change" e atualizar o atributo 'message' da instância criada anteriormente. MAS ALGO ESTÁ ERRADO. Meu código jquery na página HTML:

<script type="text/javascript">
jQuery(document).ready(function($) {

        $('.show').clickAlert();

        $('.change').click(function(){

            $('.show').clickAlert('option', 'message', 'Updated message');

        });

});
</script>

1) Como implementar corretamente a opção / método de atualização neste plugin jquery?
2) Eu tenho mais uma pergunta, mas não está relacionada à questão principal. Por exemplo, vou criar plugins usando esse padrão. Além dos métodos init e option, o plugin terá mais 10 métodos (por exemplo) responsáveis ​​pela animação. No meu método init, eu preciso verificar (usando a instrução SWITCH) qual método de animação devo chamar e chamá-lo. Como preciso fazer essa ação mais de uma vez, é melhor criar uma função para evitar a publicação de código. Onde é o melhor lugar para criar uma função como esta? Devo criá-lo como um novo método (como init, opção e outros métodos de animação) ou posso simplesmente criá-lo na função "return this.each ()" do init e também chamá-lo algumas vezes lá?

questionAnswers(1)

yourAnswerToTheQuestion