diff --git a/src/linkahead/connection/authentication/input.py b/src/linkahead/connection/authentication/input.py
index 2799207354b3949063461229d7d465e8a83c83ae..697ca5ddfaf2a1eaf223f0c39f48c94bc1497ba1 100644
--- a/src/linkahead/connection/authentication/input.py
+++ b/src/linkahead/connection/authentication/input.py
@@ -25,13 +25,13 @@
 
 A CredentialsProvider which reads the password from the input line.
 """
-from __future__ import absolute_import, unicode_literals, print_function
+from __future__ import absolute_import, unicode_literals, print_function, annotations
 from .interface import CredentialsProvider, CredentialsAuthenticator
-
+from typing import Optional
 import getpass
 
 
-def get_authentication_provider():
+def get_authentication_provider() -> CredentialsAuthenticator:
     """get_authentication_provider.
 
     Return an authenticator which uses the input for username/password credentials.
@@ -61,8 +61,8 @@ class InputCredentialsProvider(CredentialsProvider):
 
     def __init__(self):
         super(InputCredentialsProvider, self).__init__()
-        self._password = None
-        self._username = None
+        self._password: Optional[str] = None
+        self._username: Optional[str] = None
 
     def configure(self, **config):
         """configure.
diff --git a/src/linkahead/connection/authentication/interface.py b/src/linkahead/connection/authentication/interface.py
index 04ca11cd5b207ec825faa6155fc9c19d99018545..cd61427be05af78bdc99be50756a01850e7d913e 100644
--- a/src/linkahead/connection/authentication/interface.py
+++ b/src/linkahead/connection/authentication/interface.py
@@ -26,12 +26,17 @@ LinkAhead server.
 
 Implementing modules muts provide a `get_authentication_provider()` method.
 """
+from __future__ import annotations
 from abc import ABC, abstractmethod
 import logging
 from ..utils import urlencode
 from ..interface import CaosDBServerConnection
 from ..utils import parse_auth_token, auth_token_to_cookie
 from ...exceptions import LoginFailedError
+from typing import TYPE_CHECKING, Dict, Optional
+if TYPE_CHECKING:
+    from ..interface import CaosDBHTTPResponse
+    QueryDict = Dict[str, Optional[str]]
 
 
 _LOGGER = logging.getLogger(__name__)
@@ -106,7 +111,7 @@ class AbstractAuthenticator(ABC):
         """
         pass
 
-    def on_response(self, response):
+    def on_response(self, response: CaosDBHTTPResponse):
         """on_response.
 
         A call-back with is to be called by the connection after each
@@ -123,7 +128,7 @@ class AbstractAuthenticator(ABC):
         self.auth_token = parse_auth_token(
             response.getheader("Set-Cookie"))
 
-    def on_request(self, method, path, headers, **kwargs):
+    def on_request(self, method: str, path: str, headers: QueryDict, **kwargs):
         # pylint: disable=unused-argument
         """on_request.
 
diff --git a/src/linkahead/connection/authentication/keyring.py b/src/linkahead/connection/authentication/keyring.py
index 202520bbab7e940ccce6517e640eff5904039553..dad6ed9b4ad77175db6b75e30b70152878da487d 100644
--- a/src/linkahead/connection/authentication/keyring.py
+++ b/src/linkahead/connection/authentication/keyring.py
@@ -35,7 +35,7 @@ from .external_credentials_provider import ExternalCredentialsProvider
 from .interface import CredentialsAuthenticator
 
 
-def get_authentication_provider():
+def get_authentication_provider() -> CredentialsAuthenticator:
     """get_authentication_provider.
 
     Return an authenticator which uses plain text username/password credentials.
diff --git a/src/linkahead/connection/authentication/pass.py b/src/linkahead/connection/authentication/pass.py
index bec307401f945a6cd2e223195e0cce2396602061..81a901523fcad65680d34947cd9cc741e06a0352 100644
--- a/src/linkahead/connection/authentication/pass.py
+++ b/src/linkahead/connection/authentication/pass.py
@@ -33,7 +33,7 @@ from .interface import CredentialsAuthenticator
 from .external_credentials_provider import ExternalCredentialsProvider
 
 
-def get_authentication_provider():
+def get_authentication_provider() -> CredentialsAuthenticator:
     """get_authentication_provider.
 
     Return an authenticator which uses plain text username/password credentials.
diff --git a/src/linkahead/connection/utils.py b/src/linkahead/connection/utils.py
index bfb27a7278b30e20068cc9823aa49385aef08ec5..099db32946895956022a2d1c32837442395e5fb3 100644
--- a/src/linkahead/connection/utils.py
+++ b/src/linkahead/connection/utils.py
@@ -117,7 +117,7 @@ def make_uri_path(segments: Optional[List[str]] = None,
     return str("?".join([
         path_no_query, "&".join([
             quote(key) + "=" +
-            (quote(query[key]) if query[key] is not None else "")
+            (quote(query[key]) if query[key] is not None else "")  # type: ignore
             for key in query
         ])
     ]))