changed workspace parameter convention to always provide workspaceSize, so that size can be explicitly checked. Also, use more enum to make the meaning of some parameters more explicit.