Consider necessary context and replace the lookups for thread based on the struct as threads that are pooled can be reused.