do not hook the same function more than once