cache and user need type hint. also, doc block.