diff --git a/packages/pyright-scip/src/ScipSymbol.ts b/packages/pyright-scip/src/ScipSymbol.ts
index 2d005485e..19ed382e0 100644
--- a/packages/pyright-scip/src/ScipSymbol.ts
+++ b/packages/pyright-scip/src/ScipSymbol.ts
@@ -10,6 +10,10 @@ export class ScipSymbol extends TypescriptScipSymbol {
         name = name.replace(/\./, '/');
         name = name.trim();
 
+        if (name === '.' || name === '/') {
+            throw new Error('Package name cannot be "." or "/"');
+        }
+
         // @ts-ignore
         return new TypescriptScipSymbol(`scip-python python ${name} ${version} `);
     }
diff --git a/packages/pyright-scip/src/lsif-typescript/Descriptor.ts b/packages/pyright-scip/src/lsif-typescript/Descriptor.ts
index cdf036375..1380885c3 100644
--- a/packages/pyright-scip/src/lsif-typescript/Descriptor.ts
+++ b/packages/pyright-scip/src/lsif-typescript/Descriptor.ts
@@ -6,7 +6,10 @@ type Suffix = scip.Descriptor.Suffix;
 const Suffix = scip.Descriptor.Suffix;
 
 export function packageDescriptor(name: string): Descriptor {
-    return new Descriptor({ name, suffix: Suffix.Package });
+    // if (name === '') {
+    //     throw new Error('Package name cannot be empty');
+    // }
+    return new Descriptor({ name, suffix: Suffix.Namespace });
 }
 
 export function typeDescriptor(name: string): Descriptor {
@@ -35,7 +38,7 @@ export function typeParameterDescriptor(name: string): Descriptor {
 
 export function descriptorString(desc: Descriptor): string {
     switch (desc.suffix) {
-        case Suffix.Package:
+        case Suffix.Namespace:
             return escapedName(desc) + '/';
         case Suffix.Type:
             return escapedName(desc) + '#';
diff --git a/packages/pyright-scip/src/lsif-typescript/LsifSymbol.ts b/packages/pyright-scip/src/lsif-typescript/LsifSymbol.ts
index 4ebcf05f1..1808d3b83 100644
--- a/packages/pyright-scip/src/lsif-typescript/LsifSymbol.ts
+++ b/packages/pyright-scip/src/lsif-typescript/LsifSymbol.ts
@@ -25,6 +25,10 @@ export class LsifSymbol {
     }
 
     public static global(owner: LsifSymbol, descriptor: scip.Descriptor): LsifSymbol {
-        return new LsifSymbol(owner.value + descriptorString(descriptor));
+        const s = descriptorString(descriptor);
+        if (s.indexOf('SuchNestedMuchWow') !== -1) {
+            throw new Error('Got problematic descriptor with owner: ' + owner.value);
+        }
+        return new LsifSymbol(owner.value + s);
     }
 }
diff --git a/packages/pyright-scip/src/symbols.ts b/packages/pyright-scip/src/symbols.ts
index a3b3d5b15..f1e91ed62 100644
--- a/packages/pyright-scip/src/symbols.ts
+++ b/packages/pyright-scip/src/symbols.ts
@@ -1,6 +1,7 @@
 import { ParseNode } from 'pyright-internal/parser/parseNodes';
 import { Counter } from './lsif-typescript/Counter';
 import {
+    descriptorString,
     metaDescriptor,
     methodDescriptor,
     packageDescriptor,
@@ -26,6 +27,13 @@ export function makeModule(pythonPackage: PythonPackage, moduleName: string): Sc
     if (ns) {
         moduleName = ns + '.' + moduleName;
     }
+    // if (moduleName === '') {
+    //     throw new Error(
+    //         `Module name is empty namespace = ${ns}, pkgname = ${pythonPackage.name}, map = ${JSON.stringify(
+    //             Object.fromEntries(namespaces)
+    //         )}`
+    //     );
+    // }
 
     return ScipSymbol.global(makePackage(pythonPackage), packageDescriptor(moduleName));
 }
@@ -67,7 +75,17 @@ export function makeMethod(parent: ScipSymbol, name: string): ScipSymbol {
 }
 
 export function makeType(parent: ScipSymbol, name: string): ScipSymbol {
-    return ScipSymbol.global(parent, typeDescriptor(name));
+    const desc = typeDescriptor(name);
+    const descString = descriptorString(desc);
+    if (descString.indexOf('SuchNestedMuchWow') !== -1) {
+        throw new Error(
+            'Got problematic descriptor with owner: ' +
+                parent.value +
+                ', namespaces: ' +
+                JSON.stringify(Object.fromEntries(namespaces))
+        );
+    }
+    return ScipSymbol.global(parent, desc);
 }
 
 export function makeTerm(parent: ScipSymbol, name: string): ScipSymbol {
diff --git a/packages/pyright-scip/src/treeVisitor.ts b/packages/pyright-scip/src/treeVisitor.ts
index 42fcd79e7..af8a90c6a 100644
--- a/packages/pyright-scip/src/treeVisitor.ts
+++ b/packages/pyright-scip/src/treeVisitor.ts
@@ -894,9 +894,16 @@ export class TreeVisitor extends ParseTreeWalker {
         }
     }
 
-    private getScipSymbol(node: ParseNode, opts: ScipSymbolOptions | undefined = undefined): ScipSymbol {
+    private getScipSymbol(
+        node: ParseNode,
+        debug: boolean = false,
+        opts: ScipSymbolOptions | undefined = undefined
+    ): ScipSymbol {
         const existing = this.rawGetLsifSymbol(node);
         if (existing) {
+            if (debug) {
+                console.log('got existing');
+            }
             return existing;
         }
 
@@ -922,6 +929,10 @@ export class TreeVisitor extends ParseTreeWalker {
             }
 
             moduleName = nodeFileInfo.moduleName;
+            if (debug) {
+                console.log(`moduleName = ${moduleName}`);
+                console.log(`filePath = ${nodeFileInfo.filePath}`);
+            }
             if (moduleName == 'builtins') {
                 return this.emitBuiltinScipSymbol(node);
             } else if (Hardcoded.stdlib_module_names.has(moduleName)) {
@@ -1091,7 +1102,15 @@ export class TreeVisitor extends ParseTreeWalker {
                 return Symbols.makeParameter(this.getScipSymbol(node.parent!), node.name.value);
             }
             case ParseNodeType.Class: {
-                return Symbols.makeType(this.getScipSymbol(node.parent!), (node as ClassNode).name.value);
+                const x = (node as ClassNode).name.value;
+                const parentSym =
+                    x.indexOf('SuchNestedMuchWow') !== -1
+                        ? this.getScipSymbol(node.parent!, true)
+                        : this.getScipSymbol(node.parent!);
+                if (x.indexOf('SuchNestedMuchWow') !== -1) {
+                    console.log(`parentSym = ${parentSym.value} for SuchNestedMuchWow`);
+                }
+                return Symbols.makeType(parentSym, x); // Varun: bad call here
             }
             case ParseNodeType.Function: {
                 let cls = ParseTreeUtils.getEnclosingClass(node, false);
diff --git a/packages/pyright-scip/src/virtualenv/PythonPackage.ts b/packages/pyright-scip/src/virtualenv/PythonPackage.ts
index ec11ea445..203046576 100644
--- a/packages/pyright-scip/src/virtualenv/PythonPackage.ts
+++ b/packages/pyright-scip/src/virtualenv/PythonPackage.ts
@@ -3,7 +3,11 @@ import * as path from 'path';
 const validExtensions = new Set(['.py', '.pyi']);
 
 export default class PythonPackage {
-    constructor(public name: string, public version: string, public files: string[]) {}
+    constructor(public name: string, public version: string, public files: string[]) {
+        if (name === '.' || name === '/') {
+            throw new Error('Package name cannot be "." or "/"');
+        }
+    }
 
     static fromPipShow(output: string): PythonPackage {
         let name = '';
