more fiddling with semantics - still needs a bit more fixing