diff --git a/habanero/crossref/crossref.py b/habanero/crossref/crossref.py
index f899f26..cb83cfc 100644
--- a/habanero/crossref/crossref.py
+++ b/habanero/crossref/crossref.py
@@ -1,4 +1,4 @@
-from typing import List, Union
+from typing import List, Union, Optional
 
 from ..habanero_utils import check_kwargs, sub_str
 from ..request import request
@@ -167,9 +167,9 @@ class Crossref:
     def __init__(
         self,
         base_url: str = "https://api.crossref.org",
-        api_key: str = None,
-        mailto: str = None,
-        ua_string: str = None,
+        api_key: Optional[str] = None,
+        mailto: Optional[str] = None,
+        ua_string: Optional[str] = None,
         timeout: int = 5,
     ) -> None:
         self.base_url = base_url
@@ -193,17 +193,17 @@ def __repr__(self):
 
     def works(
         self,
-        ids: Union[List[str], str] = None,
-        query: str = None,
-        filter: dict = None,
-        offset: float = None,
-        limit: float = None,
-        sample: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
-        select: Union[List[str], str] = None,
-        cursor: str = None,
+        ids: List[str] | str | None = None,
+        query: Optional[str] = None,
+        filter: Optional[dict] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sample: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
+        select: List[str] | str | None = None,
+        cursor: Optional[str] = None,
         cursor_max: float = 5000,
         progress_bar: bool = False,
         warn: bool = False,
@@ -386,18 +386,18 @@ def works(
 
     def members(
         self,
-        ids: Union[List[str], str] = None,
-        query: str = None,
-        filter: dict = None,
-        offset: float = None,
-        limit: float = None,
-        sample: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
+        ids: List[str] | str | None = None,
+        query: Optional[str] = None,
+        filter: Optional[dict] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sample: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
         works: bool = False,
-        select: Union[List[str], str] = None,
-        cursor: str = None,
+        select: List[str] | str | None = None,
+        cursor: Optional[str] = None,
         cursor_max: float = 5000,
         progress_bar: bool = False,
         warn: bool = False,
@@ -502,17 +502,17 @@ def members(
 
     def prefixes(
         self,
-        ids: Union[List[str], str],
-        filter: dict = None,
-        offset: float = None,
-        limit: float = None,
-        sample: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
+        ids: List[str] | str,
+        filter: Optional[dict] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sample: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
         works: bool = False,
-        select: Union[List[str], str] = None,
-        cursor: str = None,
+        select: List[str] | str | None = None,
+        cursor: Optional[str] = None,
         cursor_max: float = 5000,
         progress_bar: bool = False,
         warn: bool = False,
@@ -617,18 +617,18 @@ def prefixes(
 
     def funders(
         self,
-        ids: Union[List[str], str] = None,
-        query: str = None,
-        filter: dict = None,
-        offset: float = None,
-        limit: float = None,
-        sample: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
+        ids: List[str] | str | None = None,
+        query: Optional[str] = None,
+        filter: Optional[dict] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sample: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
         works: bool = False,
-        select: Union[List[str], str] = None,
-        cursor: str = None,
+        select: List[str] | str | None = None,
+        cursor: Optional[str] = None,
         cursor_max: float = 5000,
         progress_bar: bool = False,
         warn: bool = False,
@@ -745,18 +745,18 @@ def funders(
 
     def journals(
         self,
-        ids: Union[List[str], str] = None,
-        query: str = None,
-        filter: dict = None,
-        offset: float = None,
-        limit: float = None,
-        sample: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
+        ids: List[str] | str | None = None,
+        query: Optional[str] = None,
+        filter: Optional[dict] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sample: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
         works: bool = False,
-        select: Union[List[str], str] = None,
-        cursor: str = None,
+        select: List[str] | str | None = None,
+        cursor: Optional[str] = None,
         cursor_max: float = 5000,
         progress_bar: bool = False,
         warn: bool = False,
@@ -868,18 +868,18 @@ def journals(
 
     def types(
         self,
-        ids: Union[List[str], str] = None,
-        query: str = None,
-        filter: dict = None,
-        offset: float = None,
-        limit: float = None,
-        sample: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
+        ids: List[str] | str | None = None,
+        query: Optional[str] = None,
+        filter: Optional[dict] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sample: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
         works: bool = False,
-        select: Union[List[str], str] = None,
-        cursor: str = None,
+        select: List[str] | str | None = None,
+        cursor: Optional[str] = None,
         cursor_max: float = 5000,
         progress_bar: bool = False,
         warn: bool = False,
@@ -970,12 +970,12 @@ def types(
 
     def licenses(
         self,
-        query: str = None,
-        offset: float = None,
-        limit: float = None,
-        sort: str = None,
-        order: str = None,
-        facet: Union[str, bool] = None,
+        query: Optional[str] = None,
+        offset: Optional[float] = None,
+        limit: Optional[float] = None,
+        sort: Optional[str] = None,
+        order: Optional[str] = None,
+        facet: str | bool | None = None,
         **kwargs,
     ) -> dict:
         """