diff --git a/pkg/items/expr.go b/pkg/items/expr.go
deleted file mode 100644
index c275c635cd52484120d3d4d38e70fbfe63054f47..0000000000000000000000000000000000000000
--- a/pkg/items/expr.go
+++ /dev/null
@@ -1,76 +0,0 @@
-package items
-
-import (
-	"context"
-
-	"git.perx.ru/perxis/perxis-go/pkg/auth"
-	"git.perx.ru/perxis/perxis-go/pkg/expr"
-	. "github.com/antonmedv/expr"
-	"github.com/antonmedv/expr/conf"
-)
-
-const EnvPerxisKey = "$perxis"
-
-type PerxisExpr struct {
-	ctx context.Context
-}
-
-func (p PerxisExpr) Fetch(i interface{}) interface{} {
-	param, _ := i.(string)
-	c := GetContext(p.ctx)
-	switch param {
-	case "SpaceID":
-		return c.SpaceID
-	case "EnvironmentID":
-		return c.EnvID
-	case "CollectionID":
-		return c.CollectionID
-	case "ItemID":
-		return c.ItemID
-	case "Item":
-		return c.Item
-
-	case "Space":
-		return c.Space
-	case "Environment":
-		return c.Environment
-
-	case "ViewSpaceID":
-		return c.ViewSpaceID
-	case "ViewEnvironmentID":
-		return c.ViewEnvironmentID
-	case "ViewCollectionID":
-		return c.ViewCollectionID
-
-	case "ViewSpace":
-		return c.ViewSpace
-	case "ViewEnvironment":
-		return c.ViewEnvironment
-
-	case "Principal":
-		return auth.GetPrincipal(p.ctx)
-	case "PrincipalID":
-		return auth.GetPrincipal(p.ctx).GetID(p.ctx)
-
-	case "Clients":
-		return c.Clients
-
-	default:
-		panic("unknown parameter")
-	}
-}
-
-func perxisOption() Option {
-	return func(c *conf.Config) {
-		env, _ := c.Env.(map[string]interface{})
-		if env != nil {
-			if ctx, ok := env[expr.EnvContextKey].(context.Context); ok {
-				env[EnvPerxisKey] = &PerxisExpr{ctx: ctx}
-			}
-		}
-	}
-}
-
-func init() {
-	expr.RegisterOption(perxisOption())
-}
diff --git a/pkg/items/expr_test.go b/pkg/items/expr_test.go
deleted file mode 100644
index b788f2271d5d418347132f25fdc26eda8f264fbb..0000000000000000000000000000000000000000
--- a/pkg/items/expr_test.go
+++ /dev/null
@@ -1,159 +0,0 @@
-package items
-
-import (
-	"context"
-	"testing"
-
-	"git.perx.ru/perxis/perxis-go/pkg/auth"
-	mockscollaborators "git.perx.ru/perxis/perxis-go/pkg/collaborators/mocks"
-	"git.perx.ru/perxis/perxis-go/pkg/expr"
-	"git.perx.ru/perxis/perxis-go/pkg/members"
-	mocksmembers "git.perx.ru/perxis/perxis-go/pkg/members/mocks"
-	"git.perx.ru/perxis/perxis-go/pkg/roles"
-	mocksroles "git.perx.ru/perxis/perxis-go/pkg/roles/mocks"
-	"git.perx.ru/perxis/perxis-go/pkg/spaces"
-	mocksSpaces "git.perx.ru/perxis/perxis-go/pkg/spaces/mocks"
-	"git.perx.ru/perxis/perxis-go/pkg/users"
-	mocksusers "git.perx.ru/perxis/perxis-go/pkg/users/mocks"
-	"github.com/pkg/errors"
-	"github.com/stretchr/testify/assert"
-	"github.com/stretchr/testify/mock"
-	"github.com/stretchr/testify/require"
-)
-
-func TestPerxisExpr_Principal(t *testing.T) {
-
-	var tt = []struct {
-		name              string
-		userscall         func(usersservice *mocksusers.Users) *mock.Call
-		memberscall       func(membersservice *mocksmembers.Members) *mock.Call
-		spacescall        func(spacesservice *mocksSpaces.Spaces) *mock.Call
-		rolescall         func(rolesservice *mocksroles.Roles) *mock.Call
-		collaboratorscall func(collaboratorsservice *mockscollaborators.Collaborators) *mock.Call
-		formula           string
-		wantErr           bool
-		expected          interface{}
-	}{
-		{
-			name: "Get current ID",
-			userscall: func(usersservice *mocksusers.Users) *mock.Call {
-				return usersservice.On("GetByIdentity", mock.Anything, "user_identity").
-					Return(&users.User{ID: "user_id", Name: "test user"}, nil).Once()
-			},
-			formula:  "$perxis.Principal.GetID(ctx)",
-			wantErr:  false,
-			expected: "user_id",
-		},
-		{
-			name: "Get current ID / User not exist",
-			userscall: func(usersservice *mocksusers.Users) *mock.Call {
-				return usersservice.On("GetByIdentity", mock.Anything, "user_identity").
-					Return(nil, errors.New("not found")).Once()
-			},
-			formula:  "$perxis.Principal.GetID(ctx)",
-			wantErr:  false,
-			expected: "",
-		},
-		{
-			name: "Get role in org",
-			userscall: func(usersservice *mocksusers.Users) *mock.Call {
-				return usersservice.On("GetByIdentity", mock.Anything, "user_identity").
-					Return(&users.User{ID: "user_id", Name: "test user"}, nil).Once()
-			},
-			spacescall: func(spacesservice *mocksSpaces.Spaces) *mock.Call {
-				return spacesservice.On("Get", mock.Anything, "sp").Return(&spaces.Space{ID: "sp", OrgID: "org"}, nil).Once()
-			},
-			memberscall: func(membersservice *mocksmembers.Members) *mock.Call {
-				return membersservice.On("Get", mock.Anything, "org", "user_id").Return(members.RoleAdmin, nil).Once()
-			},
-			formula:  "$perxis.Principal.Space('sp').Member(ctx)",
-			wantErr:  false,
-			expected: members.RoleAdmin,
-		},
-		{
-			name: "Check has space access",
-			userscall: func(usersservice *mocksusers.Users) *mock.Call {
-				return usersservice.On("GetByIdentity", mock.Anything, "user_identity").
-					Return(&users.User{ID: "user_id", Name: "test user"}, nil).Once()
-			},
-			collaboratorscall: func(collaboratorsservice *mockscollaborators.Collaborators) *mock.Call {
-				return collaboratorsservice.On("Get", mock.Anything, "sp", "user_id").Return("editor", nil).Once()
-			},
-			formula:  "$perxis.Principal.Space('sp').HasSpaceAccess(ctx, 'sp')",
-			wantErr:  false,
-			expected: true,
-		},
-		{
-			name: "Check has space access for any authorized",
-			userscall: func(usersservice *mocksusers.Users) *mock.Call {
-				return usersservice.On("GetByIdentity", mock.Anything, "user_identity").
-					Return(&users.User{ID: "user_id", Name: "test user"}, nil).Once()
-			},
-			//spacescall: func(spacesservice *mocksSpaces.Spaces) *mock.Call {
-			//	return spacesservice.On("Get", mock.Anything, "sp").Return(&spaces.Space{ID: "sp", OrgID: "org"}, nil).Once()
-			//},
-			collaboratorscall: func(collaboratorsservice *mockscollaborators.Collaborators) *mock.Call {
-				return collaboratorsservice.On("Get", mock.Anything, "sp", "user_id").Return("", errors.New("not found")).Once()
-			},
-			rolescall: func(rolesservice *mocksroles.Roles) *mock.Call {
-				return rolesservice.On("Get", mock.Anything, "sp", roles.AuthorizedRole).Return(&roles.Role{ID: roles.AuthorizedRole}, nil).Once()
-
-			},
-			formula:  "$perxis.Principal.Space('sp').HasSpaceAccess(ctx, 'sp')",
-			wantErr:  false,
-			expected: true,
-		},
-	}
-
-	for _, v := range tt {
-
-		t.Run(v.name, func(t *testing.T) {
-
-			usersservice := &mocksusers.Users{}
-			spacesservice := &mocksSpaces.Spaces{}
-			membersservice := &mocksmembers.Members{}
-			collaboratorsservice := &mockscollaborators.Collaborators{}
-			rolesservice := &mocksroles.Roles{}
-
-			if v.userscall != nil {
-				v.userscall(usersservice)
-			}
-			if v.spacescall != nil {
-				v.spacescall(spacesservice)
-			}
-			if v.memberscall != nil {
-				v.memberscall(membersservice)
-			}
-			if v.collaboratorscall != nil {
-				v.collaboratorscall(collaboratorsservice)
-			}
-			if v.rolescall != nil {
-				v.rolescall(rolesservice)
-			}
-
-			factory := &auth.PrincipalFactory{
-				Users:         usersservice,
-				Spaces:        spacesservice,
-				Members:       membersservice,
-				Collaborators: collaboratorsservice,
-				Roles:         rolesservice,
-			}
-			ctx := auth.WithPrincipal(context.Background(), factory.Principal("user_identity"))
-
-			res, err := expr.Eval(ctx, v.formula, map[string]interface{}{"ctx": context.Background()})
-
-			if !v.wantErr {
-				require.NoError(t, err)
-				assert.Equal(t, v.expected, res)
-			} else {
-				require.Error(t, err)
-			}
-
-			usersservice.AssertExpectations(t)
-			spacesservice.AssertExpectations(t)
-			membersservice.AssertExpectations(t)
-			collaboratorsservice.AssertExpectations(t)
-			rolesservice.AssertExpectations(t)
-		})
-	}
-}
diff --git a/pkg/items/item.go b/pkg/items/item.go
index 340e66a250b14a5a6b0d2e6ced0cd00b591d35cb..fc3a5154f621b601c02761c126be3ce72aa979ca 100644
--- a/pkg/items/item.go
+++ b/pkg/items/item.go
@@ -556,3 +556,11 @@ func ItemFromProto(protoItem *pb.Item) *Item {
 
 	return item
 }
+
+func GetItemIDs(arr []*Item) []string {
+	res := make([]string, len(arr))
+	for i, e := range arr {
+		res[i] = e.ID
+	}
+	return res
+}
diff --git a/pkg/items/util.go b/pkg/items/util.go
deleted file mode 100644
index e1fb4bde0ea53e3074b994f279d52c3201364a53..0000000000000000000000000000000000000000
--- a/pkg/items/util.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package items
-
-func GetItemIDs(arr []*Item) []string {
-	res := make([]string, len(arr))
-	for i, e := range arr {
-		res[i] = e.ID
-	}
-	return res
-}