create workspace if necessary