diff --git a/addons/porter/README.md b/addons/porter/README.md
index 4cab50a62..4efb5ce2a 100644
--- a/addons/porter/README.md
+++ b/addons/porter/README.md
@@ -14,10 +14,17 @@ porter [<slip> [<page>]] [owned]
 * **_slip_:** the number of the slip you want to show.
 * **_page_:** the page of the slip you want to show.
 * **owned:** shows only the items you own.
-
+```
+porter find
+```
+Shows storable items found in all inventory bags.
 ----
 
 ##changelog##
+### v1.20200419
+* **add**: New command, porter find.
+* **change**: Adjusted resource handling.
+
 ### v1.20130529
 * **fix**: Fixed parameters validation.
 * **change**: Aligned to Windower's addon development guidelines.
diff --git a/addons/porter/porter.lua b/addons/porter/porter.lua
index 8481599a9..b10c2eae3 100644
--- a/addons/porter/porter.lua
+++ b/addons/porter/porter.lua
@@ -32,63 +32,15 @@ require 'chat'
 require 'logger'
 require 'sets'
 require 'strings'
-
+res = require 'resources'
 slips = require 'slips'
 
-
-_addon.name     = 'porter'
-_addon.version  = '1.20130529'
+_addon.name = 'porter'
+_addon.version = '1.20200419'
 _addon.command = 'porter'
 _addon.author = 'Zohno'
 
-item_names = T{}
-resources  = {
-    ['armor']   = '../../plugins/resources/items_armor.xml',
-    ['weapons'] = '../../plugins/resources/items_weapons.xml',
-    ['general'] = '../../plugins/resources/items_general.xml'
-}
-
-function load_resources()
-    local slips_items_ids = T()
-    for _, slip in  pairs(slips.items) do
-        slips_items_ids:extend(slip)
-    end
-
-    slips_items_ids = S(slips_items_ids)
-
-    for kind, resource_path in pairs(resources) do
-        resource = io.open(windower.addon_path..resource_path, 'r')
-
-        if resource ~= nil then
-            while true do
-                local line = resource:read()
-
-                if line == nil then
-                    break
-                end
-
-                local id, name = line:match('id="(%d+)".+>([^<]+)<')
-
-                if id ~= nil then
-                    id = tonumber(id, 10)
-
-                    if slips_items_ids:contains(id) then
-                        item_names[id] = name:lower()
-                    end
-                end
-            end
-        else
-            error(kind..' resource file not found')
-        end
-
-        resource:close()
-    end
-end
-
 function show_slip(slip_number, slip_page, owned_only)
-    if item_names:length() == 0 then
-        load_resources()
-    end
 
     owned_only = owned_only or false
 
@@ -137,7 +89,7 @@ function show_slip(slip_number, slip_page, owned_only)
                     windower.add_to_chat(
                         55,
                         ('slip '..printable_slip_number..'/page '..tostring(slip_page and slip_page or math.ceil(item_position / 16)):lpad('0', 2)..':'):color(259)..' '..
-                        item_names[item_id]:color(is_contained and 258 or 261)
+                        res.items[item_id].name:color(is_contained and 258 or 261)
                     )
                 end
             end
@@ -145,6 +97,24 @@ function show_slip(slip_number, slip_page, owned_only)
     end
 end
 
+function show_bags()
+
+    local n = 0
+
+    for _, bag in ipairs(slips.default_storages) do
+        for _, item in ipairs(windower.ffxi.get_items(bag)) do
+            local slip_id = slips.get_slip_id_by_item_id(item.id)
+
+            if slip_id then
+                n = n + 1
+                windower.add_to_chat(207, 'slip %02d: %s %s':format(slips.get_slip_number_by_id(slip_id), bag, res.items[item.id].name:color(258)))
+            end
+        end
+    end
+
+    windower.add_to_chat(207, 'Found %s storable items in all bags':format(n))
+end
+
 windower.register_event('addon command',function (slip_number, slip_page, owned_only)
     if tonumber(slip_number) == nil then
         slip_page = nil
@@ -152,6 +122,9 @@ windower.register_event('addon command',function (slip_number, slip_page, owned_
         if slip_number == 'owned' then
             slip_number = nil
             owned_only  = true
+        elseif slip_number == 'find' then
+            show_bags()
+            return
         elseif slip_number ~= nil then
             error('That\'s not a valid slip number, kupo!')
 
@@ -181,4 +154,4 @@ windower.register_event('addon command',function (slip_number, slip_page, owned_
     end
 
     show_slip(slip_number, slip_page, owned_only)
-end)
\ No newline at end of file
+end)
