index.js
function addOptions(first, second) {
    var first = first.split('');
    var second = second.split('');
    var fin = first.slice(-1)[0];
    if (inc(c.consonants, fin)) fin = '';
    var penult = first.slice(-2)[0];
    var beg = second[0];
    var opt;
    var candra;
    if (fin == c.virama) { //  && inc(c.hal, beg)
        var vir = false;
        candra = false;
        if (fin == c.virama) {
            first.pop();
            fin = first.slice(-1)[0];
            penult = first.slice(-2)[0];
            vir = true;
        }
        else if (fin == c.candra) {
            first.pop();
            fin = first.slice(-1)[0];
            candra = true;
        }
        var opt = {type: 'cons', first: first, fin: fin, vir: vir, second: second, beg: beg, pen: penult};
        if (vir) opt.vir = true;
        if (candra) opt.candra = true;
        if (beg == c.oM) {
            opt.second.shift();
            opt.oM = true;
        }
    } else if ((inc(c.consonants, fin) || inc(c.allligas, fin)) && inc(c.allvowels, beg)) {
        opt = {type: 'vowel', first: first, fin: fin, second: second, beg: beg};
    } else if (fin == c.visarga) {
        first.pop();
        fin = u.last(first)[0];
        opt = {type: 'visarga', first: first, fin: fin, second: second, beg: beg};
    }
    return opt;
}
function addOptions(first, second) {
    var first = first.split('');
    var second = second.split('');
    var fin = first.slice(-1)[0];
    if (inc(c.consonants, fin)) fin = '';
    var penult = first.slice(-2)[0];
    var beg = second[0];
    var opt;
    var candra;
    if (fin == c.virama) { //  && inc(c.hal, beg)
        var vir = false;
        candra = false;
        if (fin == c.virama) {
            first.pop();
            fin = first.slice(-1)[0];
            penult = first.slice(-2)[0];
            vir = true;
        }
        else if (fin == c.candra) {
            first.pop();
            fin = first.slice(-1)[0];
            candra = true;
        }
        var opt = {type: 'cons', first: first, fin: fin, vir: vir, second: second, beg: beg, pen: penult};
        if (vir) opt.vir = true;
        if (candra) opt.candra = true;
        if (beg == c.oM) {
            opt.second.shift();
            opt.oM = true;
        }
    } else if ((inc(c.consonants, fin) || inc(c.allligas, fin)) && inc(c.allvowels, beg)) {
        opt = {type: 'vowel', first: first, fin: fin, second: second, beg: beg};
    } else if (fin == c.visarga) {
        first.pop();
        fin = u.last(first)[0];
        opt = {type: 'visarga', first: first, fin: fin, second: second, beg: beg};
    }
    return opt;
}
============ ADD ========== TODO: will be completely rewritten: