diff --git a/TODO b/TODO
index a2f7ac2..eab04eb 100644
--- a/TODO
+++ b/TODO
@@ -14,11 +14,13 @@ Things to do
 
  * fragmentation bomb (merge with mega-ball?)
 
+ * stick aliens to tunnel
+
  * change tunnel colour
 
  * fill holes in the tunnel when |step| > 2
 
- * draw a 3rd alien type
+ DONE Dec 18 2002: draw a 3rd alien type
 
  * draw bosses
 
diff --git a/doc/shapes.txt b/doc/shapes.txt
index e2e56df..d28f9f6 100644
--- a/doc/shapes.txt
+++ b/doc/shapes.txt
@@ -23,9 +23,24 @@ Aliens
   ,---.   ,---.   ,---.   ,---.   ,---.
  (((o))) ((((o)) (((o))) ((o)))) (((o)))
   `---'   `---'   `---'   `---'   `---'
+     o
+   o( )o
+    (_)
+
+  ____     ____     ____
+ / oO \   / oo \   / oo \
+(//~~\\) (((^^)))  \\\///
+
+  __     __     __     __
+ /oO\   /oO\   /oo\   /oo\
+//'`\\ /(~~)\ ((^^))  \\//
+
  _o|o_
   T|T
 
+   o_o    O_o    o_o    o_O
+  ( v )  ( v )  ( v )  ( v )
+   )|(    )//    )/(    \\(
                  _
     ,(|).       / \
    /,-'-.\    ,(_X_).
@@ -89,7 +104,7 @@ Shots
  '  `  -'  `-  ,-'  `-.  ,-'    `-.  ,-'    `-.  ,-'    `-.  ,-'    `-.
 
        ,--.
-      (    )
+      ( () )
        `--'
        o O
         o �
diff --git a/src/aliens.c b/src/aliens.c
index a8d1f2b..7df0ef6 100644
--- a/src/aliens.c
+++ b/src/aliens.c
@@ -32,7 +32,7 @@ void draw_aliens( game *g, aliens *al )
                 draw_alien_poolp( g, al->x[i], al->y[i], al->img[i] % 2 );
                 break;
             case ALIEN_BOOL:
-                draw_alien_bool( g, al->x[i], al->y[i], al->img[i] % 5 );
+                draw_alien_bool( g, al->x[i], al->y[i], al->img[i] % 6 );
                 break;
             case ALIEN_NONE:
                 break;
@@ -134,38 +134,39 @@ static void draw_alien_poolp( game *g, int x, int y, int frame )
 static void draw_alien_bool( game *g, int x, int y, int frame )
 {
     gfx_color( GREEN );
-    gfx_goto( x+1, y );
-    gfx_putstr( ",---." );
+    gfx_goto( x, y-1 );
+    gfx_putstr( "__" );
 
-    gfx_goto( x, y+1 );
-    gfx_putchar( '(' );
+    gfx_goto( x-1, y );
+    gfx_putchar( '/' );
+    gfx_goto( x+2, y );
+    gfx_putchar( '\\' );
 
-    gfx_color( WHITE );
     switch( frame )
     {
-    case 4:
-        gfx_putstr( "##( )" );
-        break;
     case 3:
-        gfx_putstr( ")##( " );
+        gfx_goto( x-2, y+1 );
+        gfx_putstr( "//'`\\\\" );
         break;
+    case 4:
     case 2:
-        gfx_putstr( " )##(" );
+        gfx_goto( x-2, y+1 );
+        gfx_putstr( "/(~~)\\" );
         break;
+    case 5:
     case 1:
-        gfx_putstr( "( )##" );
+        gfx_goto( x-2, y+1 );
+        gfx_putstr( "((^^))" );
         break;
     case 0:
-        gfx_putstr( "#( )#" );
+        gfx_goto( x-1, y+1 );
+        gfx_putstr( "\\\\//" );
         break;
     }
 
-    gfx_color( GREEN );
-    gfx_goto( x+6, y+1 );
-    gfx_putchar( ')' );
-
-    gfx_goto( x+1, y+2 );
-    gfx_putstr( "`---'" );
+    gfx_color( WHITE );
+    gfx_goto( x, y );
+    gfx_putstr( "oo" );
 }
 
 static void draw_alien_brah( game *g, int x, int y, int frame )