anchor.diff:    TTilerWebModule = class(TWebModule)
       procedure WebModuleCreate(Sender: TObject);
       procedure WebModuleDestroy(Sender: TObject);
  -
       procedure WebModuleException(Sender: TObject; E: Exception; var Handled: Boolean);
  +
       // url actions
  +    // layer/slice status
       procedure WebModuleDefaultHandlerAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  +    // tiles
       procedure WebModuleTilerRequestTileAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  +    // calculate value based on lat/lon for specified layer/slice
       procedure WebModuleTilerRequestPointValueAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  +    // connection and module status
       procedure TilerWebModuleRequestStatusAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
     end;
   
  
positive.code: 
  procedure TSlice.Save(aStream: TStream; aSavedSlices: TList<TSlice>);
  begin
    // todo: make abstract, remove body
  end;
  
  function TSlice.TimeFolder: string;
  
negative.code:     SliceTimeIDFormat = 'yyyymmdd.hhnn';
  
    HSC_SUCCESS_OK = 200;
    HSC_SUCCESS_CREATED = 201;
  
    HSC_ERROR_BADREQUEST = 400;
    HSC_ERROR_UNAUTHORIZED = 401;
  