diff --git a/src/linkahead/configuration.py b/src/linkahead/configuration.py
index 55a400459b1f3c9ea93d10ddf8c78765aa323eaa..7965c3a9ea33465664eb9783ecf1fd59c72383b1 100644
--- a/src/linkahead/configuration.py
+++ b/src/linkahead/configuration.py
@@ -21,14 +21,14 @@
 #
 # ** end header
 #
-
+from __future__ import annotations
 import os
 import warnings
 
 import yaml
 
 try:
-    optional_jsonschema_validate = None
+    optional_jsonschema_validate: Optional[Callable] = None
     from jsonschema import validate as optional_jsonschema_validate
 except ImportError:
     pass
@@ -37,13 +37,15 @@ from configparser import ConfigParser
 from os import environ, getcwd
 from os.path import expanduser, isfile, join
 
+from typing import Dict, Union, Callable, Optional
+
 
 def _reset_config():
     global _pycaosdbconf
     _pycaosdbconf = ConfigParser(allow_no_value=False)
 
 
-def configure(inifile):
+def configure(inifile: str) -> list[str]:
     """read config from file.
 
     Return a list of files which have successfully been parsed.
@@ -61,15 +63,15 @@ def configure(inifile):
     return read_config
 
 
-def get_config():
+def get_config() -> ConfigParser:
     global _pycaosdbconf
     if ("_pycaosdbconf" not in globals() or _pycaosdbconf is None):
         _reset_config()
     return _pycaosdbconf
 
 
-def config_to_yaml(config):
-    valobj = {}
+def config_to_yaml(config: ConfigParser) -> Dict[str, Dict[str, Union[int, str, bool]]]:
+    valobj: Dict[str, Dict[str, Union[int, str, bool]]] = {}
     for s in config.sections():
         valobj[s] = {}
         for key, value in config[s].items():
@@ -84,7 +86,7 @@ def config_to_yaml(config):
     return valobj
 
 
-def validate_yaml_schema(valobj):
+def validate_yaml_schema(valobj: Dict[str, Dict[str, Union[int, str, bool]]]):
     if optional_jsonschema_validate:
         with open(os.path.join(os.path.dirname(__file__), "schema-pycaosdb-ini.yml")) as f:
             schema = yaml.load(f, Loader=yaml.SafeLoader)
@@ -95,7 +97,7 @@ def validate_yaml_schema(valobj):
         """)
 
 
-def _read_config_files():
+def _read_config_files() -> list[str]:
     """Read config files from different paths.
 
     Read the config from either ``$PYCAOSDBINI`` or home directory (``~/.pylinkahead.ini``), and