Add experimental core.typed annotations
Improve annotations, add get-id fn