added type hinting