add tmup function