use runafter
compatibility
remove infinite recursion