Question: My base class has properties that are used by a subclass. where should Release be called? In the original base class or the class that inherits it?

Answer: 
I would say that each class manages it's own properties. So subclass class should release it's properties and base class releases it's own.

Once subclass is released it will not access base class properties, it technically does not exists anymore. Standard way of writing dealloc is:

```
- (void)dealloc
{
   // release my stuff, after this line
   // I don't exist and do not need to access any of my properties
   [super dealloc];
}

```
If the properties are only used by the subclass, they should be defined in the subclass (not the parent class) and the subclass should release them within it's -(void)dealloc function. You'd have something like this:

```
- (void)dealloc
{
   [username release];
   [password release];
   [super dealloc];
}

```

Note that we don't call dealloc on the properties! We just call "release" which signifies that we no longer will be using them and the system can clean them up (providing nobody else is using them).