slice_tag = SliceTag(self.api)
         slice_tag['slice_id'] = slice['slice_id']
         slice_tag['tag_type_id'] = tag_type['tag_type_id']
+        slice_tag['name'] = slice['name']
+        slice_tag['tagname'] = tag_type['tagname']
+        slice_tag['category'] = tag_type['category']
+        slice_tag['description'] = tag_type['description']
         slice_tag['value'] = unicode(value)
 
         # Sliver attribute if node is specified
 
         """
         AlchemyObj.sync(self, commit, validate)
         AlchemyObj.insert(self, dict(self))
+        slice_tag = AlchemyObj.select(self, dict(self))[0]
+        self['slice_tag_id'] = slice_tag['slice_tag_id']
 
     def delete(self, commit = True):
         """
     def __init__(self, api, filter = None, columns = None):
          
         # the view that we're selecting upon: start with view_slices
-        if not filter:
-            slice_tags = SliceTags().select()
-        elif isinstance(filter, dict):
-            slices_tags = SliceTags().select(filter=filter)
+        if not tag_filter:
+            slice_tags = SliceTag().select()
+        elif isinstance(tag_filter, dict):
+            slice_tags = SliceTag().select(filter=tag_filter)
+        elif isinstance(tag_filter, int):
+            slice_tags = SliceTag().select(filter={'slice_tag_id': tag_filter})
+        elif isinstance(tag_filter, (list, tuple, set)):
+            ints = filter(lambda x: isinstance(x, (int, long)), tag_filter)
+            strs = filter(lambda x: isinstance(x, StringTypes), tag_filter)
+            tag_filter = {'slice_tag_id': ints}
+            slice_tags = SliceTag().select(filter=tag_filter)
         else:
-            raise PLCInvalidArgument, "Wrong slice_tag filter %r"%filter
+            raise PLCInvalidArgument, "Wrong slice_tag filter %r"%tag_filter
 
         for slice_tag in slice_tags:
-            self.append(slice_tag)
+            self.append(SliceTag(api, object=slice_tag, columns=columns))
 
         if insert == True or 'tag_type_id' not in self:
             AlchemyObj.insert(self, dict(self))
             tag_type = AlchemyObj.select(self, filter={'tagname': self['tagname']})
-            self['tag_type_id'] = tag_type['tag_type_id']
+            self['tag_type_id'] = tag_type.tag_type_id
         else:
             AlchemyObj.update(self, dict(self))