diff --git a/hbro.cabal b/hbro.cabal
--- a/hbro.cabal
+++ b/hbro.cabal
@@ -1,5 +1,5 @@
 Name:                hbro
-Version:             0.3
+Version:             0.4
 Synopsis:            A suckless minimal KISSy browser
 Stability:           alpha
 -- Description:         
diff --git a/src/Gui.hs b/src/Gui.hs
--- a/src/Gui.hs
+++ b/src/Gui.hs
@@ -83,8 +83,8 @@
 
 -- | Show the prompt bar label and default text.
 -- As the user validates its entry, the given callback is executed.
-prompt :: String -> String -> GUI -> (GUI -> IO ()) -> IO ()
-prompt label defaultText gui callback = do
+prompt :: String -> String -> Bool -> GUI -> (GUI -> IO ()) -> IO ()
+prompt label defaultText incremental gui callback = do
     -- Show prompt
     showPrompt True gui
 
@@ -95,53 +95,44 @@
     widgetGrabFocus (mPrompt gui)
 
     -- Register callback
-    rec id <- on (mPrompt gui) keyPressEvent $ do
-        key <- eventKeyName
-
-        case key of
-            "Return" -> do liftIO $ showPrompt False gui
-                           liftIO $ callback gui
-                           liftIO $ signalDisconnect id
-                           liftIO $ widgetGrabFocus (mWebView gui)
-            "Escape" -> do liftIO $ showPrompt False gui
-                           liftIO $ signalDisconnect id
-                           liftIO $ widgetGrabFocus (mWebView gui)
-            _        -> return ()
-
-        return False
-
-    return ()
-
-
--- promptFind :: Maybe String -> GUI -> IO ()
--- promptFind label gui = do
---     -- Show prompt
---     widgetShow (mPromptLabel gui)
---     widgetShow (mPrompt gui)
-
---     -- Fill prompt
---     case label of
---         Just text -> labelSetText (mPromptLabel gui) text
---         _         -> return ()
-
---     widgetGrabFocus (mPrompt gui)
+    case incremental of
+        True -> do 
+            id1 <- on (mPrompt gui) editableChanged $  
+                liftIO $ callback gui
+            rec id2 <- on (mPrompt gui) keyPressEvent $ do
+                key <- eventKeyName
+                
+                case key of
+                    "Return" -> do
+                        liftIO $ showPrompt False gui
+                        liftIO $ signalDisconnect id1
+                        liftIO $ signalDisconnect id2
+                        liftIO $ widgetGrabFocus (mWebView gui)
+                    "Escape" -> do
+                        liftIO $ showPrompt False gui
+                        liftIO $ signalDisconnect id1
+                        liftIO $ signalDisconnect id2
+                        liftIO $ widgetGrabFocus (mWebView gui)
+                    _ -> return ()
+                return False
+            return ()
 
---     -- Register callback
---     rec id <- on (mPrompt gui) keyPressEvent $ do
---         key         <- eventKeyName
---         --keywords    <- entryGetText (mPrompt gui)
+        _ -> do
+            rec id <- on (mPrompt gui) keyPressEvent $ do
+                key <- eventKeyName
 
---         case key of
---             "Return" -> do liftIO $ widgetHide (mPromptLabel gui)
---                            liftIO $ widgetHide (mPrompt gui)
---                            liftIO $ webViewMarkTextMatches (mWebView gui) keywords True 0
---                            liftIO $ signalDisconnect id
---             "Escape" -> do liftIO $ widgetHide (mPromptLabel gui)
---                            liftIO $ widgetHide (mPrompt gui)
---                            liftIO $ signalDisconnect id
---             _        -> return ()
+                case key of
+                    "Return" -> do
+                        liftIO $ showPrompt False gui
+                        liftIO $ callback gui
+                        liftIO $ signalDisconnect id
+                        liftIO $ widgetGrabFocus (mWebView gui)
+                    "Escape" -> do
+                        liftIO $ showPrompt False gui
+                        liftIO $ signalDisconnect id
+                        liftIO $ widgetGrabFocus (mWebView gui)
+                    _        -> return ()
+                return False
 
---         return False
+            return ()
 
---     return ()
---     
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -36,6 +36,12 @@
         (([],           "o"),       promptURL False), 
         (([Shift],      "O"),       promptURL True),
 
+        -- Search
+        (([Shift],      "/"),       promptFind False True),
+        (([Shift],      "?"),       promptFind False False),
+        (([],           "n"),       findNext False True),
+        (([Shift],      "N"),       findNext False False),
+
         -- Others
         (([Control],    "i"),       showWebInspector),
         (([Control],    "u"),       toggleSourceMode),
@@ -123,8 +129,8 @@
             _ <- on webView downloadRequested $ \download -> do
                 getUrl <- downloadGetUri download
                 _ <- case getUrl of
-                        Just url -> forkOS $ do _ <- rawSystem "wget" [url]; return ()
-                        _        -> forkOS $ do _ <- rawSystem "pwd"  []; return ()
+                        Just url -> forkOS $ (rawSystem "wget" [url]) >> return ()
+                        _        -> forkOS $ return ()
                 return True
 
             _ <- on webView mimeTypePolicyDecisionRequested $ \_ request mimetype policyDecision -> do
@@ -181,16 +187,29 @@
 
         promptURL :: Bool -> GUI -> IO ()        
         promptURL False gui = 
-            prompt "Open URL" "" gui (\g -> do 
+            prompt "Open URL" "" False gui (\g -> do 
                 uri <- entryGetText (mPrompt g)
                 loadURL uri g)
         promptURL _ gui = do
             uri <- webViewGetUri (mWebView gui)
             case uri of
-                Just url -> prompt "Open URL" url gui (\g -> do
+                Just url -> prompt "Open URL" url False gui (\g -> do
                                 u <- entryGetText (mPrompt g)
                                 loadURL u g)
                 _ -> return ()
+
+        promptFind :: Bool -> Bool -> GUI -> IO ()
+        promptFind caseSensitive forward gui =
+            prompt "Search" "" True gui (\gui' -> do
+                keyWord <- entryGetText (mPrompt gui')
+                webViewSearchText (mWebView gui) keyWord caseSensitive forward True
+                return ())
+
+        findNext :: Bool -> Bool -> GUI -> IO()
+        findNext caseSensitive forward gui = do
+            keyWord <- entryGetText (mPrompt gui)
+            webViewSearchText (mWebView gui) keyWord caseSensitive forward True
+            return ()
 
         printPage :: GUI -> IO ()
         printPage gui = do
