code: def encipher(self,message):
                     
          message = self.remove_punctuation(message)  
          effective_ch = [0,0,0,0,0,0,0] # these are the wheels which are effective currently, 1 for yes, 0 no
                                         # -the zero at the beginning is extra, indicates lug was in pos 0
          ret = ''
          # from now we no longer need the wheel starts, we can just increment the actual key
          for j in range(len(message)):
              shift = 0 
              effective_ch[0] = 0;
              effective_ch[1] = self.wheel_1_settings[self.actual_key[0]]
              effective_ch[2] = self.wheel_2_settings[self.actual_key[1]]
              effective_ch[3] = self.wheel_3_settings[self.actual_key[2]]
              effective_ch[4] = self.wheel_4_settings[self.actual_key[3]]
              effective_ch[5] = self.wheel_5_settings[self.actual_key[4]]
              effective_ch[6] = self.wheel_6_settings[self.actual_key[5]]
               
              for i in range(0,27): # implements the cylindrical drum with lugs on it
                  if effective_ch[self.lug_positions[i][0]] or effective_ch[self.lug_positions[i][1]]: shift+=1
              # shift has been found, now actually encrypt letter
              ret += self.subst(message[j],key='ZYXWVUTSRQPONMLKJIHGFEDCBA',offset=-shift); # encrypt letter
              self.advance_key();    # advance the key wheels
          return ret
docs: Encipher string using M209 cipher according to initialised key. Punctuation and whitespace
          are removed from the input.       
  
          Example (continuing from the example above)::
          
              ciphertext = m.encipher(plaintext)     
  
          :param string: The string to encipher.
          :returns: The enciphered string.