use complete type hints