implement transient functions