Credentials.fromMnemonic = function(network, words, passphrase, account, derivationStrategy) {
  _checkNetwork(network);
  $.shouldBeNumber(account);
  $.checkArgument(_.contains(_.values(Constants.DERIVATION_STRATEGIES), derivationStrategy));

  var m = new Mnemonic(words);
  var x = new Credentials();
  x.xPrivKey = m.toHDPrivateKey(passphrase, network).toString();
  x.mnemonicHasPassphrase = !!passphrase;
  x.account = account;
  x.derivationStrategy = derivationStrategy;
  x._expand();
  return x;
};
Credentials.createWithMnemonic = function(network, passphrase, language, account) {
  _checkNetwork(network);
  if (!wordsForLang[language]) throw new Error('Unsupported language');
  $.shouldBeNumber(account);

  var m = new Mnemonic(wordsForLang[language]);
  while (!Mnemonic.isValid(m.toString())) {
    m = new Mnemonic(wordsForLang[language])
  };
  var x = new Credentials();

  x.network = network;
  x.account = account;
  x.xPrivKey = m.toHDPrivateKey(passphrase, network).toString();
  x._expand();
  x.mnemonic = m.phrase;
  x.mnemonicHasPassphrase = !!passphrase;

  return x;
};