added more type hints