  Why is an AST routine declared as type void? 
 The Question is:
 
What is the reason for the AST routines to be
declared as "void" functions ?
 
 
 The Answer is:
    Declaring a function to have a type is only useful if there is
    somewhere for the return value to be returned to. Since an AST routine
    is called asynchronously, by definition, there is nowhere to return any
    value to. You could declare the function to be any scalar type you wish
    and even return a value, but there won't be anyone to read it. By
    convention it makes most sense to declare AST routines as void.
