since and tick need to be inlined to avoid multiple definitions