an update version and decided not to fully immate TC's functions