There seems to be a bit of misunderstanding in this thread, so hopefully I can clear it up in this post. The special variable "Self" refers to the object to which the script is attached, not the script itself. The confusion here arouses, I suspect, due to the fact that "Self" refers to the object cast to the type defined by the script. Every Papyrus script is essentially a type definition. For example, Actor.psc defines the type "Actor". If I write a script called "MyActorScript" that extends "Actor", then I'm essentially defining a type called "MyActorScript", and every Actor to which MyActorScript attached will be an object of type MyActorScript. GetBaseObject returns the base object (of type Form) of the object on which it is called. If it's called without explicitly specifying the object on which it should be called, then it is called on "Self". In this case, that means the scripted object as the type you're defining in your script. As your script extends ObjectReference, it also inherits all of ObjectReference's functions, including GetBaseObject. The difficulty you're facing is likely due to issues with inventory items. I can't remember when it will and won't work, but I think creating the item outside of an inventory then adding it to an inventory will cause it to act appropriately, whereas creating an item inside an inventory may cause issues. This isn't something I've had to deal with very much, though, so I can't tell you off the top of my head how to solve your problem. Hopefully I've at least clarified what's going on here a bit for you though. Cipscis