throws on unexpected call