added type hints to mitigate reflection