Rework the implementation to workspace 3.0