diff --git a/src/lua/digest.lua b/src/lua/digest.lua
index 4e062d30260a2d864efe416e8842e9af5aa15cfb..ad1f23092fdf8ebec80b5615cb03c27846e899c9 100644
--- a/src/lua/digest.lua
+++ b/src/lua/digest.lua
@@ -72,8 +72,8 @@ local function tohex(r, size)
     return ffi.string(hexres, size * 2)
 end
 
-local PMurHash = {
-    default_seed = 13,
+local PMurHash
+local PMurHash_methods = {
 
     update = function(self, str)
         str = tostring(str or '')
@@ -81,7 +81,7 @@ local PMurHash = {
         self.total_length = self.total_length + string.len(str)
     end,
 
-    digest = function(self)
+    result = function(self)
         return ffi.C.PMurHash32_Result(self.seed[0], self.value[0], self.total_length)
     end,
 
@@ -90,69 +90,78 @@ local PMurHash = {
         self.total_length = 0
         self.value[0] = 0
     end,
-}
 
-PMurHash.__call = function(self, str)
-    str = tostring(str or '')
-    return ffi.C.PMurHash32(PMurHash.default_seed, str, string.len(str))
-end
+    copy = function(self)
+        local new_self = PMurHash.new()
+        new_self.seed[0] = self.seed[0]
+        new_self.value[0] = self.value[0]
+        new_self.total_length = self.total_length
+        return new_self
+    end
+}
 
-PMurHash.copy = function(self)
-    new_self = PMurHash.new{seed=self.default_seed}
-    new_self.seed[0] = self.seed[0]
-    new_self.value[0] = self.value[0]
-    new_self.total_length = self.total_length
-    return new_self
-end
+PMurHash = {
+    default_seed = 13,
 
-PMurHash.new = function(opts)
-    opts = opts or {}
-    local self = setmetatable({}, { __index = PMurHash })
-    self.default_seed = (opts.seed or PMurHash.default_seed)
-    self.seed = ffi.new("int[1]", self.default_seed)
-    self.value = ffi.new("int[1]", 0)
-    self.total_length = 0
-    return self
-end
+    new = function(opts)
+        opts = opts or {}
+        local self = setmetatable({}, { __index = PMurHash_methods })
+        self.default_seed = (opts.seed or PMurHash.default_seed)
+        self.seed = ffi.new("int[1]", self.default_seed)
+        self.value = ffi.new("int[1]", 0)
+        self.total_length = 0
+        return self
+    end
+}
 
-local CRC32 = {
-    crc_begin = 4294967295,
+setmetatable(PMurHash, {
+    __call = function(self, str)
+        str = tostring(str or '')
+        return ffi.C.PMurHash32(PMurHash.default_seed, str, string.len(str))
+    end
+})
 
+local CRC32
+local CRC32_methods = {
     update = function(self, str)
         str = tostring(str or '')
         self.value = ffi.C.crc32_calc(self.value, str, string.len(str))
     end,
 
-    digest = function(self)
+    result = function(self)
         return self.value
     end,
 
     clear = function(self)
         self.value = CRC32.crc_begin
     end,
+
+    copy = function(self)
+        local new_self = CRC32.new()
+        new_self.value = self.value
+        return new_self
+    end
 }
 
-CRC32.__call = function(self, str)
-    str = tostring(str or '')
-    return ffi.C.crc32_calc(CRC32.crc_begin, str, string.len(str))
-end
+CRC32 = {
+    crc_begin = 4294967295,
 
-CRC32.copy = function(self)
-    new_self = CRC32.new()
-    new_self.value = self.value
-    return new_self
-end
+    new = function()
+        local self = setmetatable({}, { __index = CRC32_methods })
+        self.value = CRC32.crc_begin
+        return self
+    end
+}
 
-CRC32.new = function()
-    local self = setmetatable({}, { __index == CRC32 })
-    self.value = CRC32.crc_begin
-    return self
-end
+setmetatable(CRC32, {
+    __call = function(self, str)
+        str = tostring(str or '')
+        return ffi.C.crc32_calc(CRC32.crc_begin, str, string.len(str))
+    end
+})
 
 local m = {
-    crc32 = {
-        new = CRC32.new,
-    },
+    crc32 = CRC32,
 
     crc32_update = function(crc, str)
         str = tostring(str or '')
@@ -163,14 +172,9 @@ local m = {
        return ffi.C.guava(state, buckets)
     end,
 
-    murmur = {
-       new = PMurHash.new,
-    },
+    murmur = PMurHash
 }
 
-setmetatable(m.murmur, { __call = PMurHash.__call })
-setmetatable(m.crc32, { __call = CRC32.__call })
-
 if ssl ~= nil then
 
     for pname, df in pairs(def) do
diff --git a/test/box/digest.result b/test/box/digest.result
index c81a7d1a0b7b64d19210d556a496f8a05ee575d6..347c60d1020e2d655e6aafcc3e7a32bb3a9173ee 100644
--- a/test/box/digest.result
+++ b/test/box/digest.result
@@ -173,13 +173,13 @@ lua box.digest.murmur('1234')
 lua mur = box.digest.murmur.new{seed=13}
 ---
 ...
-lua nulldigest = mur:digest()
+lua nulldigest = mur:result()
 ---
 ...
 lua mur:update('1234')
 ---
 ...
-lua mur:digest()
+lua mur:result()
 ---
  - 1859914009
 ...
@@ -189,14 +189,14 @@ lua mur_new = mur:copy()
 lua mur_new:update('1234')
 ---
 ...
-lua mur_new:digest() ~= mur:digest()
+lua mur_new:result() ~= mur:result()
 ---
  - true
 ...
 lua mur:clear()
 ---
 ...
-lua nulldigest == mur:digest()
+lua nulldigest == mur:result()
 ---
  - true
 ...
@@ -206,7 +206,7 @@ lua mur = box.digest.murmur.new{seed=14}
 lua mur:update('1234')
 ---
 ...
-lua mur:digest()
+lua mur:result()
 ---
  - 1689834281
 ...
diff --git a/test/box/digest.test b/test/box/digest.test
index 9fa76e56f4f0c98c6f341bec3c325b4e0d0d174c..02a95716910a8b02dfc50af38bb9d0fa5ef3bb80 100644
--- a/test/box/digest.test
+++ b/test/box/digest.test
@@ -53,15 +53,15 @@ exec admin "lua box.digest.guava(1673758223894951030, 11)"
 
 exec admin "lua box.digest.murmur('1234')"
 exec admin "lua mur = box.digest.murmur.new{seed=13}"
-exec admin "lua nulldigest = mur:digest()"
+exec admin "lua nulldigest = mur:result()"
 exec admin "lua mur:update('1234')"
-exec admin "lua mur:digest()"
+exec admin "lua mur:result()"
 exec admin "lua mur_new = mur:copy()"
 exec admin "lua mur_new:update('1234')"
-exec admin "lua mur_new:digest() ~= mur:digest()"
+exec admin "lua mur_new:result() ~= mur:result()"
 exec admin "lua mur:clear()"
-exec admin "lua nulldigest == mur:digest()"
+exec admin "lua nulldigest == mur:result()"
 exec admin "lua mur = box.digest.murmur.new{seed=14}"
 exec admin "lua mur:update('1234')"
-exec admin "lua mur:digest()"
+exec admin "lua mur:result()"
 exec admin "lua mur, mur_new, nulldigest = nil, nil, nil"