diff --git a/lib/mmmd/blankshell.rb b/lib/mmmd/blankshell.rb
index ec1c540..bd34f02 100644
--- a/lib/mmmd/blankshell.rb
+++ b/lib/mmmd/blankshell.rb
@@ -79,11 +79,12 @@ module PointBlank
           [process_destination(result[0].gsub(/\\(?=[><])/, '')[1..-2]),
            text.delete_prefix(result[0]).lstrip]
         elsif (result = text.match(/\A\S+/)) &&
-              !result[0].start_with?('<') &&
-              result &&
-              balanced?(result[0])
-          [process_destination(result[0]),
-           text.delete_prefix(result[0]).lstrip]
+              (lnk = result[0]) &&
+              !lnk.start_with?('<') &&
+              (lnk = (ix = find_balanced_end(lnk)) ? lnk[..ix - 1] : lnk) &&
+              balanced?(lnk)
+          [process_destination(lnk),
+           text.delete_prefix(lnk).lstrip]
         else
           [nil, text]
         end
@@ -125,7 +126,7 @@ module PointBlank
           destination, remaining = read_destination(remaining[1..])
           return [nil, text] unless destination
 
-          title, remaining = read_title(remaining)
+          title, remaining = read_title(remaining.lstrip)
           properties[:uri] = destination
           properties[:title] = title
           close_bracket = true
@@ -164,7 +165,7 @@ module PointBlank
             bracketcount += 1
           elsif part == ')'
             bracketcount -= 1
-            return index if bracketcount.zero?
+            return index if bracketcount <= 0
           end
           index += part.length
         end