add typehinting