use thread vars instead of caller; more specs; v0.1.1