better type hinting