add more type hints