updated TLinear