The caller is responsible for opening the object—calling these methods give them an open object. Or are you suggesting we return an SBTDocLink in an unopened state, so the caller can then immediately call open on it? In general I prefer objects to be in a usable state when created, unless there's a strong reason to do otherwise. I think it makes the code easier to understand if objects have fewer states.