diff --git a/lib/slop/option.rb b/lib/slop/option.rb
index <HASH>..<HASH> 100644
--- a/lib/slop/option.rb
+++ b/lib/slop/option.rb
@@ -65,17 +65,10 @@ class Slop
       @delimiter = options[:delimiter] || ','
       @limit = options[:limit] || 0
 
-      if @long_flag && @long_flag.size > @slop.longest_flag
-        if @help.respond_to? :to_str
-          size = @long_flag.size + @help.size
-        else
-          size = @long_flag.size
-        end
-        @slop.longest_flag = size
-      end
-
       @callback = blk if block_given?
       @callback ||= options[:callback]
+
+      build_longest_flag
     end
 
     # @return [Boolean] true if this option expects an argument
@@ -176,5 +169,16 @@ class Slop
         value
       end
     end
+
+    def build_longest_flag
+      if @long_flag && @long_flag.size > @slop.longest_flag
+        if @help.respond_to? :to_str
+          size = @long_flag.size + @help.size
+        else
+          size = @long_flag.size
+        end
+        @slop.longest_flag = size
+      end
+    end
   end
 end
move this logic into a private method