interfaces now creates a new empty output array rather than copying the existing one.
moved the cache init flag inside the exception handler as expected. Also, removed double underscore variable names in cache. bad bad bad