var Singleton = (function(){
  var instance;

  function init() {
    var privateVariable = '123';
    function privateMethod() {
      console.log('i am a private method!');
    }
    return {
      publicMethod: function(){
         console.log('i am a public method!');
      },
      publicProperty: '456'
    }
  }
  return {
    getInstance: function(){
      if(!instance){
        instance = init();
      }
      return  instance;
    }
  }
})()