diff --git a/pkg/images/imgconv/imgconv.go b/images/convert/convert.go
similarity index 93%
rename from pkg/images/imgconv/imgconv.go
rename to images/convert/convert.go
index ad8e6b5697accc4b62898abbc0cef5453b3fdadf..b704055dd7399eb4629d1804cd51574befff49c6 100644
--- a/pkg/images/imgconv/imgconv.go
+++ b/images/convert/convert.go
@@ -1,4 +1,4 @@
-package imgconv
+package convert
 
 import (
 	"image"
@@ -14,6 +14,10 @@ type (
 	Format     string
 )
 
+func (f Format) String() string {
+	return string(f)
+}
+
 var (
 	defaultFormatEncoderRegistry = make(map[Format]EncodeFunc)
 	formatExtensions             = make(map[string]Format)
@@ -21,7 +25,7 @@ var (
 
 func RegisterFormatEncoder(format Format, fn EncodeFunc, extensions ...string) {
 	defaultFormatEncoderRegistry[format] = fn
-	formatExtensions[string(format)] = format
+	formatExtensions[format.String()] = format
 	for _, ext := range extensions {
 		formatExtensions[strings.TrimPrefix(strings.ToLower(ext), ".")] = format
 	}
diff --git a/pkg/images/imgconv/imgconv_test.go b/images/convert/convert_test.go
similarity index 99%
rename from pkg/images/imgconv/imgconv_test.go
rename to images/convert/convert_test.go
index 13660d7b976046bf69af743b6a122eb00aa44ba0..b7a759eac8dba586d985806bb587975e07a93403 100644
--- a/pkg/images/imgconv/imgconv_test.go
+++ b/images/convert/convert_test.go
@@ -1,4 +1,4 @@
-package imgconv
+package convert
 
 import (
 	"bytes"
diff --git a/pkg/images/imgconv/default_format.go b/images/convert/default_format.go
similarity index 97%
rename from pkg/images/imgconv/default_format.go
rename to images/convert/default_format.go
index 389df4ea57eba814af8e862be9fbb7a745915371..7e680d33432480ca06037f0038f83c28a9dea1c0 100644
--- a/pkg/images/imgconv/default_format.go
+++ b/images/convert/default_format.go
@@ -1,4 +1,4 @@
-package imgconv
+package convert
 
 import (
 	"image"
diff --git a/pkg/images/imgconv/testdata/1.bmp b/images/convert/testdata/1.bmp
similarity index 100%
rename from pkg/images/imgconv/testdata/1.bmp
rename to images/convert/testdata/1.bmp
diff --git a/pkg/images/imgconv/testdata/1.gif b/images/convert/testdata/1.gif
similarity index 100%
rename from pkg/images/imgconv/testdata/1.gif
rename to images/convert/testdata/1.gif
diff --git a/pkg/images/imgconv/testdata/1.go b/images/convert/testdata/1.go
similarity index 100%
rename from pkg/images/imgconv/testdata/1.go
rename to images/convert/testdata/1.go
diff --git a/pkg/images/imgconv/testdata/1.jpeg b/images/convert/testdata/1.jpeg
similarity index 100%
rename from pkg/images/imgconv/testdata/1.jpeg
rename to images/convert/testdata/1.jpeg
diff --git a/pkg/images/imgconv/testdata/1.png b/images/convert/testdata/1.png
similarity index 100%
rename from pkg/images/imgconv/testdata/1.png
rename to images/convert/testdata/1.png
diff --git a/pkg/images/imgconv/testdata/1.tiff b/images/convert/testdata/1.tiff
similarity index 100%
rename from pkg/images/imgconv/testdata/1.tiff
rename to images/convert/testdata/1.tiff
diff --git a/pkg/images/imgconv/testdata/1.webp b/images/convert/testdata/1.webp
similarity index 100%
rename from pkg/images/imgconv/testdata/1.webp
rename to images/convert/testdata/1.webp
diff --git a/pkg/images/imgconv/webp.go b/images/convert/webp.go
similarity index 97%
rename from pkg/images/imgconv/webp.go
rename to images/convert/webp.go
index f5f42e0454e913faf98f68f19914da8a4f40e8ad..d9f5a892247316fc46581d93a727e5a2646c604e 100644
--- a/pkg/images/imgconv/webp.go
+++ b/images/convert/webp.go
@@ -1,6 +1,6 @@
 //go:build webp
 
-package imgconv
+package convert
 
 import (
 	"image"
diff --git a/pkg/images/imgconv/webp_test.go b/images/convert/webp_test.go
similarity index 96%
rename from pkg/images/imgconv/webp_test.go
rename to images/convert/webp_test.go
index b244d1520aacd2ac5062ab1b4b872f653f627350..59518ca7384f90332e2e5ed3f95edf295247c904 100644
--- a/pkg/images/imgconv/webp_test.go
+++ b/images/convert/webp_test.go
@@ -1,6 +1,6 @@
 //go:build webp
 
-package imgconv
+package convert
 
 import (
 	"bytes"
diff --git a/pkg/images/middleware/error_logging_middleware.go b/images/middleware/error_logging_middleware.go
similarity index 77%
rename from pkg/images/middleware/error_logging_middleware.go
rename to images/middleware/error_logging_middleware.go
index 749db73b2ed5682c9725c920ae4b850eff5e67e1..d0e36f879dfcafb2c037722ab171eb79240ef95c 100644
--- a/pkg/images/middleware/error_logging_middleware.go
+++ b/images/middleware/error_logging_middleware.go
@@ -1,16 +1,16 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/error_log
+// template: ../../assets/templates/middleware/error_log
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
 
 import (
 	"context"
 
+	"git.perx.ru/perxis/perxis-go/images"
 	"git.perx.ru/perxis/perxis-go/pkg/files"
-	"git.perx.ru/perxis/perxis-go/pkg/images"
 	"go.uber.org/zap"
 )
 
diff --git a/pkg/images/middleware/logging_middleware.go b/images/middleware/logging_middleware.go
similarity index 85%
rename from pkg/images/middleware/logging_middleware.go
rename to images/middleware/logging_middleware.go
index fb7d0af4faecfde621e295b0da8e6f2e098e56a1..a69a56ee6a236aab96b1d22340691a63e36fdc01 100644
--- a/pkg/images/middleware/logging_middleware.go
+++ b/images/middleware/logging_middleware.go
@@ -1,19 +1,19 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/access_log
+// template: ../../assets/templates/middleware/access_log
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/access_log -o logging_middleware.go -l ""
 
 import (
 	"context"
 	"fmt"
 	"time"
 
+	"git.perx.ru/perxis/perxis-go/images"
 	"git.perx.ru/perxis/perxis-go/pkg/auth"
 	"git.perx.ru/perxis/perxis-go/pkg/files"
-	"git.perx.ru/perxis/perxis-go/pkg/images"
 	"go.uber.org/zap"
 	"go.uber.org/zap/zapcore"
 )
diff --git a/pkg/images/middleware/middleware.go b/images/middleware/middleware.go
similarity index 74%
rename from pkg/images/middleware/middleware.go
rename to images/middleware/middleware.go
index d4717a0db627b3f11abfc569cd1c79e30300b93f..e29bdeb8c6e7a5e2d6b298d01069f4566481e80a 100644
--- a/pkg/images/middleware/middleware.go
+++ b/images/middleware/middleware.go
@@ -4,10 +4,10 @@
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/middleware -o middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/middleware -o middleware.go -l ""
 
 import (
-	"git.perx.ru/perxis/perxis-go/pkg/images"
+	"git.perx.ru/perxis/perxis-go/images"
 	"go.uber.org/zap"
 )
 
diff --git a/pkg/images/middleware/recovering_middleware.go b/images/middleware/recovering_middleware.go
similarity index 83%
rename from pkg/images/middleware/recovering_middleware.go
rename to images/middleware/recovering_middleware.go
index 4fe31525e0b587e94a6cb8259ae551b38fd4f450..9ad61603a2584b58f4635c9ee8296f67f047b7a5 100644
--- a/pkg/images/middleware/recovering_middleware.go
+++ b/images/middleware/recovering_middleware.go
@@ -4,14 +4,14 @@
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/recovery -o recovering_middleware.go -l ""
 
 import (
 	"context"
 	"fmt"
 
+	"git.perx.ru/perxis/perxis-go/images"
 	"git.perx.ru/perxis/perxis-go/pkg/files"
-	"git.perx.ru/perxis/perxis-go/pkg/images"
 	"go.uber.org/zap"
 )
 
diff --git a/pkg/images/middleware/telemetry_middleware.go b/images/middleware/telemetry_middleware.go
similarity index 89%
rename from pkg/images/middleware/telemetry_middleware.go
rename to images/middleware/telemetry_middleware.go
index b3cb8bef156613220dac2d1ad01a56bc4bba3723..2c0aac8eeaa3507d16ee852fd47b4a46569bc827 100644
--- a/pkg/images/middleware/telemetry_middleware.go
+++ b/images/middleware/telemetry_middleware.go
@@ -4,13 +4,13 @@
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l ""
 
 import (
 	"context"
 
+	"git.perx.ru/perxis/perxis-go/images"
 	"git.perx.ru/perxis/perxis-go/pkg/files"
-	"git.perx.ru/perxis/perxis-go/pkg/images"
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/trace"
diff --git a/pkg/images/mocks/Images.go b/images/mocks/Images.go
similarity index 74%
rename from pkg/images/mocks/Images.go
rename to images/mocks/Images.go
index baf57ae6c35baeb19c45ba6046833ba0d41868f9..0797d930363b79877509b71c6e010004ff156eae 100644
--- a/pkg/images/mocks/Images.go
+++ b/images/mocks/Images.go
@@ -1,12 +1,12 @@
-// Code generated by mockery v2.15.0. DO NOT EDIT.
+// Code generated by mockery v2.38.0. DO NOT EDIT.
 
 package mocks
 
 import (
 	context "context"
 
+	images "git.perx.ru/perxis/perxis-go/images"
 	files "git.perx.ru/perxis/perxis-go/pkg/files"
-	images "git.perx.ru/perxis/perxis-go/pkg/images"
 
 	mock "github.com/stretchr/testify/mock"
 )
@@ -20,7 +20,15 @@ type Images struct {
 func (_m *Images) Get(ctx context.Context, source *files.File, opts *images.GetOptions) (*files.File, error) {
 	ret := _m.Called(ctx, source, opts)
 
+	if len(ret) == 0 {
+		panic("no return value specified for Get")
+	}
+
 	var r0 *files.File
+	var r1 error
+	if rf, ok := ret.Get(0).(func(context.Context, *files.File, *images.GetOptions) (*files.File, error)); ok {
+		return rf(ctx, source, opts)
+	}
 	if rf, ok := ret.Get(0).(func(context.Context, *files.File, *images.GetOptions) *files.File); ok {
 		r0 = rf(ctx, source, opts)
 	} else {
@@ -29,7 +37,6 @@ func (_m *Images) Get(ctx context.Context, source *files.File, opts *images.GetO
 		}
 	}
 
-	var r1 error
 	if rf, ok := ret.Get(1).(func(context.Context, *files.File, *images.GetOptions) error); ok {
 		r1 = rf(ctx, source, opts)
 	} else {
@@ -39,13 +46,12 @@ func (_m *Images) Get(ctx context.Context, source *files.File, opts *images.GetO
 	return r0, r1
 }
 
-type mockConstructorTestingTNewImages interface {
+// NewImages creates a new instance of Images. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func NewImages(t interface {
 	mock.TestingT
 	Cleanup(func())
-}
-
-// NewImages creates a new instance of Images. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-func NewImages(t mockConstructorTestingTNewImages) *Images {
+}) *Images {
 	mock := &Images{}
 	mock.Mock.Test(t)
 
diff --git a/pkg/images/mocks/Middleware.go b/images/mocks/Middleware.go
similarity index 75%
rename from pkg/images/mocks/Middleware.go
rename to images/mocks/Middleware.go
index 43ba1dd2b86fd43237c6e83c24a13928a8f8c2d3..5f4292c718008b2814d46b2cf5ac2d59016ca225 100644
--- a/pkg/images/mocks/Middleware.go
+++ b/images/mocks/Middleware.go
@@ -1,9 +1,9 @@
-// Code generated by mockery v2.15.0. DO NOT EDIT.
+// Code generated by mockery v2.38.0. DO NOT EDIT.
 
 package mocks
 
 import (
-	images "git.perx.ru/perxis/perxis-go/pkg/images"
+	images "git.perx.ru/perxis/perxis-go/images"
 
 	mock "github.com/stretchr/testify/mock"
 )
@@ -17,6 +17,10 @@ type Middleware struct {
 func (_m *Middleware) Execute(_a0 images.Images) images.Images {
 	ret := _m.Called(_a0)
 
+	if len(ret) == 0 {
+		panic("no return value specified for Execute")
+	}
+
 	var r0 images.Images
 	if rf, ok := ret.Get(0).(func(images.Images) images.Images); ok {
 		r0 = rf(_a0)
@@ -29,13 +33,12 @@ func (_m *Middleware) Execute(_a0 images.Images) images.Images {
 	return r0
 }
 
-type mockConstructorTestingTNewMiddleware interface {
+// NewMiddleware creates a new instance of Middleware. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func NewMiddleware(t interface {
 	mock.TestingT
 	Cleanup(func())
-}
-
-// NewMiddleware creates a new instance of Middleware. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-func NewMiddleware(t mockConstructorTestingTNewMiddleware) *Middleware {
+}) *Middleware {
 	mock := &Middleware{}
 	mock.Mock.Test(t)
 
diff --git a/pkg/images/service.go b/images/service.go
similarity index 100%
rename from pkg/images/service.go
rename to images/service.go
diff --git a/pkg/images/transport/client.microgen.go b/images/transport/client.microgen.go
similarity index 93%
rename from pkg/images/transport/client.microgen.go
rename to images/transport/client.microgen.go
index 9994b2c34e5234a20ae8d13846e3b5ef6fe41668..d8b9342e08a9770c17cbc81ead84eddf57dd16fa 100644
--- a/pkg/images/transport/client.microgen.go
+++ b/images/transport/client.microgen.go
@@ -6,8 +6,8 @@ import (
 	"context"
 	"errors"
 
+	images "git.perx.ru/perxis/perxis-go/images"
 	files "git.perx.ru/perxis/perxis-go/pkg/files"
-	images "git.perx.ru/perxis/perxis-go/pkg/images"
 	codes "google.golang.org/grpc/codes"
 	status "google.golang.org/grpc/status"
 )
diff --git a/pkg/images/transport/endpoints.microgen.go b/images/transport/endpoints.microgen.go
similarity index 100%
rename from pkg/images/transport/endpoints.microgen.go
rename to images/transport/endpoints.microgen.go
diff --git a/pkg/images/transport/exchanges.microgen.go b/images/transport/exchanges.microgen.go
similarity index 86%
rename from pkg/images/transport/exchanges.microgen.go
rename to images/transport/exchanges.microgen.go
index 9b9992a01ee5d21e24a69a88731de706e35a846e..71d2cf729e20f354e4860963c78e70cc24e198e2 100644
--- a/pkg/images/transport/exchanges.microgen.go
+++ b/images/transport/exchanges.microgen.go
@@ -3,8 +3,8 @@
 package transport
 
 import (
+	images "git.perx.ru/perxis/perxis-go/images"
 	files "git.perx.ru/perxis/perxis-go/pkg/files"
-	images "git.perx.ru/perxis/perxis-go/pkg/images"
 )
 
 type (
diff --git a/pkg/images/transport/grpc/client.microgen.go b/images/transport/grpc/client.microgen.go
similarity index 89%
rename from pkg/images/transport/grpc/client.microgen.go
rename to images/transport/grpc/client.microgen.go
index cbafae5f0c308d46b4b8b9430ff1c798943fdc5e..f613e655bb0af499c9c7c525526b6007b3c1926d 100644
--- a/pkg/images/transport/grpc/client.microgen.go
+++ b/images/transport/grpc/client.microgen.go
@@ -3,7 +3,7 @@
 package transportgrpc
 
 import (
-	transport "git.perx.ru/perxis/perxis-go/pkg/images/transport"
+	transport "git.perx.ru/perxis/perxis-go/images/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/images"
 	grpckit "github.com/go-kit/kit/transport/grpc"
 	grpc "google.golang.org/grpc"
diff --git a/pkg/images/transport/grpc/protobuf_endpoint_converters.microgen.go b/images/transport/grpc/protobuf_endpoint_converters.microgen.go
similarity index 96%
rename from pkg/images/transport/grpc/protobuf_endpoint_converters.microgen.go
rename to images/transport/grpc/protobuf_endpoint_converters.microgen.go
index e1800e1747d2d03335586a358e3139154b3ae0f0..d206e2f4e94445f7b1ade13f23c296eaf68bcf59 100644
--- a/pkg/images/transport/grpc/protobuf_endpoint_converters.microgen.go
+++ b/images/transport/grpc/protobuf_endpoint_converters.microgen.go
@@ -7,7 +7,7 @@ import (
 	"context"
 	"errors"
 
-	transport "git.perx.ru/perxis/perxis-go/pkg/images/transport"
+	transport "git.perx.ru/perxis/perxis-go/images/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/images"
 )
 
diff --git a/pkg/images/transport/grpc/protobuf_type_converters.microgen.go b/images/transport/grpc/protobuf_type_converters.microgen.go
similarity index 91%
rename from pkg/images/transport/grpc/protobuf_type_converters.microgen.go
rename to images/transport/grpc/protobuf_type_converters.microgen.go
index ff8c72337ca3dffda4433a785163c141e37967d7..48a13510667582f7858cbc04ff517598eb17772d 100644
--- a/pkg/images/transport/grpc/protobuf_type_converters.microgen.go
+++ b/images/transport/grpc/protobuf_type_converters.microgen.go
@@ -5,8 +5,8 @@
 package transportgrpc
 
 import (
+	service "git.perx.ru/perxis/perxis-go/images"
 	file "git.perx.ru/perxis/perxis-go/pkg/files"
-	service "git.perx.ru/perxis/perxis-go/pkg/images"
 	pbfile "git.perx.ru/perxis/perxis-go/proto/files"
 	pbimage "git.perx.ru/perxis/perxis-go/proto/images"
 )
@@ -74,9 +74,9 @@ func ProtoToPtrGetOptions(protoOpts *pbimage.GetRequest_GetOptions) (*service.Ge
 }
 
 //func PtrFilesFileToProto(source *files.File) (*pbimage.File, error) {
-//	panic("function not provided") // TODO: provide converter
+//	panic("function not provided") // TODO: provide convert
 //}
 //
 //func ProtoToPtrFilesFile(protoSource *images.File) (*files.File, error) {
-//	panic("function not provided") // TODO: provide converter
+//	panic("function not provided") // TODO: provide convert
 //}
diff --git a/pkg/images/transport/grpc/server.microgen.go b/images/transport/grpc/server.microgen.go
similarity index 92%
rename from pkg/images/transport/grpc/server.microgen.go
rename to images/transport/grpc/server.microgen.go
index 47e04dc3e59277209f7c6ff3b4028a8cf079d9e0..19d48fcd57b1a210c3864e26cf9d21871b7ce3d9 100644
--- a/pkg/images/transport/grpc/server.microgen.go
+++ b/images/transport/grpc/server.microgen.go
@@ -4,7 +4,7 @@
 package transportgrpc
 
 import (
-	transport "git.perx.ru/perxis/perxis-go/pkg/images/transport"
+	transport "git.perx.ru/perxis/perxis-go/images/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/images"
 	grpc "github.com/go-kit/kit/transport/grpc"
 	context "golang.org/x/net/context"
diff --git a/pkg/images/transport/server.microgen.go b/images/transport/server.microgen.go
similarity index 91%
rename from pkg/images/transport/server.microgen.go
rename to images/transport/server.microgen.go
index 26105401a1f079c3837d311ccf7da233c2deb9a7..de0d7e160da27151d585256b3a3becc38d7ffffe 100644
--- a/pkg/images/transport/server.microgen.go
+++ b/images/transport/server.microgen.go
@@ -5,7 +5,7 @@ package transport
 import (
 	"context"
 
-	images "git.perx.ru/perxis/perxis-go/pkg/images"
+	images "git.perx.ru/perxis/perxis-go/images"
 	endpoint "github.com/go-kit/kit/endpoint"
 )