public function process($data)
 {
     $this->daemon->tick();
     //grab session id and number
     $data['message'] = array_merge(['count' => 1, 'mode' => 'photo', 'delay' => 0], $data['message']);
     $session = $data['message']['session'];
     $number = $data['message']['number'];
     $mode = $data['message']['mode'];
     $count = $data['message']['count'];
     $delay = $data['message']['delay'];
     if (!$session) {
         error_log('no session');
         return $this->daemon->run;
     }
     error_log('message data: ' . json_encode($data['message']));
     if ($delay) {
         sleep($delay);
     }
     //take photo
     switch ($mode) {
         case 'photo':
         default:
             error_log('taking photo');
             $this->gopro->shutter();
             sleep(2);
             break;
     }
     $last = $this->gopro->getLastFile(GoPro::FILTER_PHOTO);
     error_log('got last file: ' . $last);
     error_log('adding photo to session: ' . $last);
     $this->darkroom->addPhoto($session, $last, $number);
     $this->daemon->tick();
     return $this->daemon->run;
 }