do not rebuild functions unnecessarily