use factories for stateful semantics (-> fresh router etc. for each interpreter)