guard against multiple user callback invocations
constant vars should be uppercase