Attempting to use defaults with generic objects results in compiler errors both with {} and {defTypeConstr}. We likely need to lift the generic parameters and add them to the procedures. Then use Inner[T] everywhere instead of Inner.
@Patitotective no clue if you have any interest in throwing darts and seeing what lands. Totally up to you.