exchanged thread local storage with an abstract object returned to the function caller