Another issue is creating isolated objects of abstract types.
For example:

pure A makeA(T)(T data) { return new B!T(data); }

abstract class A {
    void work();
}
class B(T) : A {
  override void work() { data.work(); }
  private this(T data) { _data = data; }
  T _data;
}

It is impossible to create Isolated!A object because A is abstract.
We need something like

pure auto makeIsolatedFactory(F, ARGS...)(F factory, ARGS args) if(isCallable!F) {
    return Isolated!(ReturnType!F)(factory(args));
}

or passing factory by template alias parameter (for templated factories)