diff --git a/dhscanner-bitcode.cabal b/dhscanner-bitcode.cabal
--- a/dhscanner-bitcode.cabal
+++ b/dhscanner-bitcode.cabal
@@ -20,7 +20,7 @@
     in mind. The commands resemble an abstract RISC-style assembley, motivated by keeping
     later-phases analyses as simple as possible.
 
-version:            1.0.10
+version:            1.0.11
 license:            GPL-3.0-only
 license-file:       LICENSE
 author:             OrenGitHub
diff --git a/src/Fqn.hs b/src/Fqn.hs
--- a/src/Fqn.hs
+++ b/src/Fqn.hs
@@ -6,24 +6,78 @@
 
 where
 
+-- project imports
+import qualified Token
+
 -- general imports
 import Data.Aeson
 import GHC.Generics
 
--- | Fully qualified name
-data Fqn = Fqn { content :: String } deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+-- |
+--
+-- * Fully qualified name
+-- * Resolution at the /file/ level
+-- * Unidirectional resolution only ( one pass )
+--
+data Fqn
+   = Imported ImportedContent
+   | ClassInstance ClassInstanceContent
+   | ClassName ClassNameContent
+   | FieldedAccess Fqn Token.FieldName
+   | NativeTypeInt
+   | NativeTypeString
+   | NativeTypeBool
+   | NativeTypeConstInt Int
+   | NativeTypeConstStr String
+   | NativeTypeConstBool Bool
+   | NativeTypeNull
+   | Unknwon
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-any :: Fqn
-any = Fqn { content = "any" }
+data ImportedContent
+   = ImportedLocal ImportedLocalContent
+   | ImportedThirdParty ImportedThirdPartyContent
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeInt :: Fqn
-nativeInt = Fqn { content = "int" }
+data ImportedLocalContent
+   = ImportedLocalContent
+     {
+         importedLocalLocation :: FilePath,
+         importedLocalRest :: [ String ]
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeStr :: Fqn
-nativeStr = Fqn { content = "str" }
+data ImportedThirdPartyContent
+   = ImportedThirdPartyContent
+     {
+         importedThirdPartyName :: String,
+         importedThirdPartyRest :: [ String ]
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeBool :: Fqn
-nativeBool = Fqn { content = "bool" }
+data ClassInstanceContent
+   = ClassInstanceContent
+     {
+         instanceName :: InstanceName,
+         instanceAttribute :: InstanceAttribute
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeNull :: Fqn
-nativeNull = Fqn { content = "null" }
+data InstanceName
+   = Self -- ^ Python, Ruby
+   | This -- ^ Java, Php, Javascript, Typescript
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+
+data InstanceAttribute
+   = InstanceAttribute
+     {
+         attributeName :: Token.FieldName
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+
+data ClassNameContent
+   = ClassNameContent
+     {
+         classNameContent :: Token.ClassName
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
