basic structure of recongiser