(define-splat (name arg1 arg2 ... argn)
        (local-vars (var1 value1) 
                    (var2 value2)
                      ... 
                    (varn valuen))
        (preconditions . body)
        (initializer . body)
        (finalizer . body)
        (wait-for fluent-list . body)
        (event-handler 
             (event predicate)
             (action action)
        (method context . body))
The wait-for, event-handler, and method forms can be repeated as necessary to describe all of the relevant parts. Any of the parts except the initial (name . args) binding form can be omitted, and parts can appear in any order.