when you create ref counted object, ref count is initially set to 1
if you call a function which return ref counted object, make sure to call Release when you finished with it.
no need to call AddRef if you pass ref counted object as function parameter
no need to call AddRef if you return ref counted object
if you are going to store ref counted object(parameter) for later use, call AddRef (make sure to call Release when you finished with it.)