CAD tools for knowledge based part design and assembly versioning