diff --git a/dhscanner-ast.cabal b/dhscanner-ast.cabal
--- a/dhscanner-ast.cabal
+++ b/dhscanner-ast.cabal
@@ -22,7 +22,7 @@
     and models both of them as plain sequential code blocks. Every file has exactly one ast that represents it.
     Non Haskell parogrammers note: The ast is /immutable/ (like everything else in Haskell ...)
 
-version:            1.0.10
+version:            1.1.0
 license:            GPL-3.0-only
 license-file:       LICENSE
 author:             OrenGitHub
@@ -32,17 +32,17 @@
 stability:          experimental
 build-type:         Simple
 
-common warnings
-    ghc-options: -Wall
+common ghc_options
 
+    ghc-options: -Wall -O2
+
 library
 
     import:
-        warnings
+        ghc_options
 
     exposed-modules:
         Ast,
-        Asts,
         Token,
         Location
 
@@ -60,7 +60,7 @@
 test-suite dhscanner-ast-test
 
     import:
-        warnings
+        ghc_options
 
     type:
         exitcode-stdio-1.0
diff --git a/src/Ast.hs b/src/Ast.hs
--- a/src/Ast.hs
+++ b/src/Ast.hs
@@ -64,14 +64,11 @@
 -- |
 -- * every file has /exactly one/ root 🌱
 --
--- * classes, functions and methods are organized as /statements/ ( not /declarations/ )
---
--- * this enables a simpler view for /modules/, /namespaces/, /nested classes/ etc.
+-- * classes, functions and methods are organized as /statements/
 --
 data Root
    = Root
      {
-         filename :: FilePath,
          stmts :: [ Stmt ]
      }
      deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
@@ -106,23 +103,46 @@
    deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
 -- |
--- @since 1.0.6
--- 'paramNominalTypeV2' aims to replace 'paramNominalType'
+--
+-- * used by:
+--
+--       * 'StmtFuncContent'
+--       * 'StmtMethodContent'
+--       * 'ExpLambdaContent'
+--
+-- * note:
+--
+--       * `self` param in python methods has 'paramSerialIdx' = 0
+--       * `self` param in python methods is /ignored/ when assigning the serial index to /other/ params
+--       * see the example code below
+--
+-- ==== __Example:__
+--
+-- * params enumeration for python methods
+--
+-- @
+-- class Person:
+--     # paramSerialIdx = 1 -----------------------+
+--     # paramSerialIdx = 0 ------------+          |
+--     # paramSerialIdx = 0 ------+     |          |
+--     #                          |     |          |
+--     def some_arbitrary_method(self, name: str, age: int) -> None:
+--         pass
+-- @
 data Param
    = Param
      {
          paramName :: Token.ParamName,
-         paramNominalType :: Token.NominalTy, -- ^ ( will be deprecated soon )
-         paramNominalTypeV2 :: Maybe Var, -- ^ ( use this instead )
-         paramSerialIdx :: Word -- ^ ( /zero/-based )
+         paramNominalType :: Maybe Var,
+         paramSerialIdx :: Word -- ^ ( /zero/-based, ignores `self` in python methods when enumerating /other/ params )
      }
      deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
 data DataMember
    = DataMember
      {
-         dataMemberName :: Token.MembrName,
-         dataMemberNominalType :: Token.NominalTy,
+         dataMemberName :: Token.MemberName,
+         dataMemberNominalType :: Maybe Var,
          dataMemberInitValue :: Maybe Exp
      }
      deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
@@ -130,15 +150,15 @@
 data DataMembers
    = DataMembers
      {
-         actualDataMembers :: Map Token.MembrName DataMember
+         actualDataMembers :: Map Token.MemberName DataMember
      }
      deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
 data StmtMethodContent
    = StmtMethodContent
      {
-         stmtMethodReturnType :: Token.NominalTy,
-         stmtMethodName :: Token.MethdName,
+         stmtMethodReturnType :: Maybe Var,
+         stmtMethodName :: Token.MethodName,
          stmtMethodParams :: [ Param ],
          stmtMethodBody :: [ Stmt ],
          stmtMethodLocation :: Location,
@@ -150,7 +170,7 @@
 data Methods
    = Methods
      {
-         actualMethods :: Map Token.MethdName StmtMethodContent
+         actualMethods :: Map Token.MethodName StmtMethodContent
      }
      deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
@@ -167,7 +187,7 @@
 data StmtFuncContent
    = StmtFuncContent
      {
-         stmtFuncReturnType :: Token.NominalTy,
+         stmtFuncReturnType :: Maybe Var,
          stmtFuncName :: Token.FuncName,
          stmtFuncParams :: [ Param ],
          stmtFuncBody :: [ Stmt ],
@@ -180,7 +200,7 @@
    = StmtVardecContent
      {
          stmtVardecName :: Token.VarName,
-         stmtVardecNominalType :: Token.NominalTy,
+         stmtVardecNominalType :: Maybe Var,
          stmtVardecInitValue :: Maybe Exp,
          stmtVardecLocation :: Location
      }
@@ -241,9 +261,6 @@
      }
      deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
--- |
--- @since 1.0.9
--- ( added for better [php support](https://www.php.net/manual/en/language.operators.assignment.php) )
 data ExpAssignContent
    = ExpAssignContent
      {
@@ -405,8 +422,3 @@
    | VarField VarFieldContent
    | VarSubscript VarSubscriptContent
    deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
-
-locationVar :: Var -> Location
-locationVar (VarSimple    v) = Token.getVarNameLocation (varName v)
-locationVar (VarField     v) = varFieldLocation v
-locationVar (VarSubscript v) = varSubscriptLocation v
diff --git a/src/Asts.hs b/src/Asts.hs
deleted file mode 100644
--- a/src/Asts.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE DeriveAnyClass #-}
-{-# LANGUAGE OverloadedStrings #-}
-
-module Asts
-
-where
-
-import Data.Aeson
-import GHC.Generics
-
--- project imports
-import qualified Ast
-
-data Asts
-   = Asts
-     {
-         asts :: [ Ast.Root ]
-     }
-     deriving ( Show, Eq, Generic, ToJSON, FromJSON )
-
diff --git a/src/Token.hs b/src/Token.hs
--- a/src/Token.hs
+++ b/src/Token.hs
@@ -48,39 +48,33 @@
    deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
    
 data VarName   = VarName   Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
-data PkgName   = PkgName   Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
 data FuncName  = FuncName  Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
 data ParamName = ParamName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
 data FieldName = FieldName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
 data ClassName = ClassName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
 data SuperName = SuperName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
-data MembrName = MembrName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord, ToJSONKey, FromJSONKey )
-data MethdName = MethdName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord, ToJSONKey, FromJSONKey )
-data NominalTy = NominalTy Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
+data MemberName = MemberName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord, ToJSONKey, FromJSONKey )
+data MethodName = MethodName Named deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord, ToJSONKey, FromJSONKey )
 
 -- getters signatures (to quiet ghc -Wall)
 getVarNameToken   :: VarName   -> Named
-getPkgNameToken   :: PkgName   -> Named
 getFuncNameToken  :: FuncName  -> Named
 getParamNameToken :: ParamName -> Named
 getFieldNameToken :: FieldName -> Named
 getClassNameToken :: ClassName -> Named
 getSuperNameToken :: SuperName -> Named
-getMembrNameToken :: MembrName -> Named
-getMethdNameToken :: MethdName -> Named
-getNominalTyToken :: NominalTy -> Named
+getMemberNameToken :: MemberName -> Named
+getMethodNameToken :: MethodName -> Named
 
 -- getters
 getVarNameToken   (VarName   v) = v
-getPkgNameToken   (PkgName   p) = p
 getFuncNameToken  (FuncName  f) = f
 getParamNameToken (ParamName p) = p
 getFieldNameToken (FieldName f) = f
 getClassNameToken (ClassName c) = c
 getSuperNameToken (SuperName s) = s
-getMembrNameToken (MembrName m) = m
-getMethdNameToken (MethdName m) = m
-getNominalTyToken (NominalTy t) = t
+getMemberNameToken (MemberName m) = m
+getMethodNameToken (MethodName m) = m
 
 -- locations signatures
 getVarNameLocation :: VarName -> Location
@@ -88,7 +82,7 @@
 getClassNameLocation :: ClassName -> Location
 getParamNameLocation :: ParamName -> Location
 getFieldNameLocation :: FieldName -> Location
-getMethodNameLocation :: MethdName -> Location
+getMethodNameLocation :: MethodName -> Location
 
 -- locations signatures
 getVarNameLocation = location . getVarNameToken
@@ -96,7 +90,7 @@
 getClassNameLocation = location . getClassNameToken
 getParamNameLocation = location . getParamNameToken
 getFieldNameLocation = location . getFieldNameToken
-getMethodNameLocation = location . getMethdNameToken
+getMethodNameLocation = location . getMethodNameToken
 
 data ConstBool
    = ConstBool
