diff --git a/.gitignore b/.gitignore
index 63ed09b..1e95a12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@
 priv/
 bazel-*
 gazelle*
+coverage.txt
 
diff --git a/core/kg/Makefile b/core/kg/Makefile
new file mode 100644
index 0000000..c962617
--- /dev/null
+++ b/core/kg/Makefile
@@ -0,0 +1,67 @@
+GO ?= $(shell command -v go 2> /dev/null)
+GO_TEST_FLAGS ?= -race
+
+export GO111MODULE=on
+
+MINIMUM_SUPPORTED_GO_MAJOR_VERSION = 1
+MINIMUM_SUPPORTED_GO_MINOR_VERSION = 14
+GO_MAJOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1)
+GO_MINOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2)
+GO_VERSION_VALIDATION_ERR_MSG = Golang version is not supported, please update to at least $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION).$(MINIMUM_SUPPORTED_GO_MINOR_VERSION)
+
+BUILDER_GOOS_GOARCH="$(shell $(GO) env GOOS)_$(shell $(GO) env GOARCH)"
+
+## Define the default target (make all)
+.PHONY: default
+default: all
+
+## Checks the code style, tests, runs the code.
+.PHONY: all
+all: check-style test run
+
+## Runs eslint and golangci-lint
+.PHONY: check-style
+check-style:
+	@if ! [ -x "$$(command -v golangci-lint)" ]; then \
+		echo "golangci-lint is not installed. Please see https://github.com/golangci/golangci-lint#install for installation instructions."; \
+		exit 1; \
+	fi; \
+
+	@echo Running golangci-lint
+	golangci-lint run ./...
+
+## Runs unit tests.
+.PHONY: test
+test:
+	@echo Running unit tests
+	$(GO) test -v $(GO_TEST_FLAGS) ./...
+
+## Creates a coverage report
+.PHONY: coverage
+coverage:
+	$(GO) test $(GO_TEST_FLAGS) -coverprofile=coverage.txt ./...
+	$(GO) tool cover -html=coverage.txt
+
+## Clean removes all artifacts.
+.PHONY: clean
+clean:
+	rm -fr coverage.txt
+	rm -fr server.log
+
+.PHONY: run
+run: validate-go-version
+	@echo Running Knowledge Graph services
+
+	$(GO) run ./cmd/
+
+.PHONY: validate-go-version
+validate-go-version: ## Validates the installed version of go against minimum requirement.
+	@if [ $(GO_MAJOR_VERSION) -gt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
+		exit 0 ;\
+	elif [ $(GO_MAJOR_VERSION) -lt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
+		echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
+		exit 1; \
+	elif [ $(GO_MINOR_VERSION) -lt $(MINIMUM_SUPPORTED_GO_MINOR_VERSION) ] ; then \
+		echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
+		exit 1; \
+	fi
\ No newline at end of file
diff --git a/core/kg/app/app.go b/core/kg/app/app.go
new file mode 100644
index 0000000..0c65fc8
--- /dev/null
+++ b/core/kg/app/app.go
@@ -0,0 +1,19 @@
+package app
+
+import (
+	"github.com/giolekva/pcloud/core/kg/store"
+)
+
+// App represents an application layer of the kg
+type App struct {
+	store  store.Store
+	logger logger
+}
+
+// NewApp creates new app
+func NewApp(store store.Store, logger logger) *App {
+	return &App{
+		store:  store,
+		logger: logger,
+	}
+}
diff --git a/core/kg/app/app_mock.go b/core/kg/app/app_mock.go
new file mode 100644
index 0000000..f85e754
--- /dev/null
+++ b/core/kg/app/app_mock.go
@@ -0,0 +1,18 @@
+package app
+
+import (
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/store/memory"
+)
+
+type MockApp struct {
+	*App
+}
+
+// NewTestApp creates app for testing
+func NewTestApp() *MockApp {
+	memStore := memory.New()
+	logger := &log.NoOpLogger{}
+	a := NewApp(memStore, logger)
+	return &MockApp{a}
+}
diff --git a/core/kg/app/interfaces.go b/core/kg/app/interfaces.go
new file mode 100644
index 0000000..53cb1aa
--- /dev/null
+++ b/core/kg/app/interfaces.go
@@ -0,0 +1,10 @@
+package app
+
+import "github.com/giolekva/pcloud/core/kg/log"
+
+type logger interface {
+	Debug(message string, fields ...log.Field)
+	Info(message string, fields ...log.Field)
+	Warn(message string, fields ...log.Field)
+	Error(message string, fields ...log.Field)
+}
diff --git a/core/kg/app/user.go b/core/kg/app/user.go
new file mode 100644
index 0000000..07ff301
--- /dev/null
+++ b/core/kg/app/user.go
@@ -0,0 +1,15 @@
+package app
+
+import (
+	"github.com/giolekva/pcloud/core/kg/model"
+	"github.com/pkg/errors"
+)
+
+// GetUser returns user
+func (a *App) GetUser(userID string) (*model.User, error) {
+	user, err := a.store.User().Get(userID)
+	if err != nil {
+		return nil, errors.Wrap(err, "can't get user from store")
+	}
+	return user, nil
+}
diff --git a/core/kg/common/interfaces.go b/core/kg/common/interfaces.go
new file mode 100644
index 0000000..daee20e
--- /dev/null
+++ b/core/kg/common/interfaces.go
@@ -0,0 +1,17 @@
+package common
+
+import (
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/model"
+)
+
+type LoggerIface interface {
+	Debug(message string, fields ...log.Field)
+	Info(message string, fields ...log.Field)
+	Warn(message string, fields ...log.Field)
+	Error(message string, fields ...log.Field)
+}
+
+type AppIface interface {
+	GetUser(userID string) (*model.User, error)
+}
diff --git a/core/kg/go.mod b/core/kg/go.mod
index ebc81e8..f6bf84a 100644
--- a/core/kg/go.mod
+++ b/core/kg/go.mod
@@ -4,15 +4,17 @@
 
 require (
 	github.com/Masterminds/squirrel v1.5.0
+	github.com/golang/protobuf v1.4.2
 	github.com/gorilla/mux v1.8.0
 	github.com/jmoiron/sqlx v1.3.1
 	github.com/pkg/errors v0.9.1
 	github.com/spf13/cobra v1.1.3
-	github.com/vardius/shutdown v1.0.2
+	github.com/stretchr/testify v1.7.0
 	go.uber.org/zap v1.16.0
 	golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 // indirect
 	golang.org/x/tools v0.0.0-20200313205530-4303120df7d8 // indirect
 	google.golang.org/grpc v1.35.0
+	google.golang.org/protobuf v1.25.0
 	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
 	gopkg.in/natefinch/lumberjack.v2 v2.0.0
 )
diff --git a/core/kg/go.sum b/core/kg/go.sum
index 60b5893..37a24ce 100644
--- a/core/kg/go.sum
+++ b/core/kg/go.sum
@@ -27,7 +27,6 @@
 github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
 github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
 github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -46,9 +45,7 @@
 github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
 github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -88,15 +85,12 @@
 github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
 github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
 github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
@@ -115,9 +109,7 @@
 github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
 github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
 github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
@@ -130,12 +122,10 @@
 github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
 github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
@@ -149,32 +139,26 @@
 github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
 github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
 github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
 github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
 github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
 github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
 github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
 github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
 github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
 github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -199,40 +183,30 @@
 github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
 github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
 github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
 github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
-github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/vardius/shutdown v1.0.2 h1:wNHRpdYc+KvJ3Q9KmkwKiqsnaW5LfkcP9ElXXv0OpC4=
-github.com/vardius/shutdown v1.0.2/go.mod h1:rvvQd32kv5NJycU1l4VJtqrJKY0Gg0IoQpVxZJeL44M=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
@@ -253,9 +227,7 @@
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 h1:58fnuSXlxZmFdJyvtTFVmVhcMLU6v5fEb/ok4wyqtNU=
 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -263,7 +235,6 @@
 golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
 golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
-golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -292,7 +263,6 @@
 golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -313,16 +283,13 @@
 golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
 golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 h1:ywK/j/KkyTHcdyYSZNXGjMwgmDSfjglYZ3vStQ/gSCU=
 golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
@@ -348,7 +315,6 @@
 golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc h1:NCy3Ohtk6Iny5V/reW2Ktypo4zIpWBdRJ1uFMjBxdg8=
 golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200313205530-4303120df7d8 h1:gkI/wGGwpcG5W4hLCzZNGxA4wzWBGGDStRI1MrjDl2Q=
@@ -397,12 +363,10 @@
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
 gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
 gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
@@ -413,6 +377,8 @@
 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/core/kg/log/noop.go b/core/kg/log/noop.go
new file mode 100644
index 0000000..5839b7d
--- /dev/null
+++ b/core/kg/log/noop.go
@@ -0,0 +1,9 @@
+package log
+
+type NoOpLogger struct {
+}
+
+func (l *NoOpLogger) Debug(message string, fields ...Field) {}
+func (l *NoOpLogger) Info(message string, fields ...Field)  {}
+func (l *NoOpLogger) Warn(message string, fields ...Field)  {}
+func (l *NoOpLogger) Error(message string, fields ...Field) {}
diff --git a/core/kg/model/proto/Makefile b/core/kg/model/proto/Makefile
new file mode 100644
index 0000000..a0efc58
--- /dev/null
+++ b/core/kg/model/proto/Makefile
@@ -0,0 +1,9 @@
+.PHONY: help
+
+.DEFAULT_GOAL := help
+
+help:
+	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
+
+generate: ## generates the gRPC server interfaces from `*.proto` service definition
+	@protoc --go_out=. --go-grpc_out=. user.proto 
\ No newline at end of file
diff --git a/core/kg/model/proto/user.proto b/core/kg/model/proto/user.proto
new file mode 100644
index 0000000..b9b4f69
--- /dev/null
+++ b/core/kg/model/proto/user.proto
@@ -0,0 +1,65 @@
+syntax = "proto3";
+
+option go_package = ".;proto";
+
+package proto;
+
+import "google/protobuf/timestamp.proto";
+
+// UserService handles commands dispatch and user view actions
+service UserService {
+  rpc GetUser (GetUserRequest) returns (GetUserResponse);
+  rpc ListUsers (ListUserRequest) returns (ListUserResponse);
+  rpc CreateUser (CreateUserRequest) returns (CreateUserResponse);
+}
+
+// DispatchUserCommandRequest is passed when dispatching
+message DispatchUserCommandRequest {
+  string name = 1;
+  bytes payload = 2;
+}
+
+// User object
+message User {
+  optional string id = 1;
+  optional google.protobuf.Timestamp create_at = 2;
+  optional google.protobuf.Timestamp update_at = 3;
+  optional google.protobuf.Timestamp delete_at = 4;
+  string username = 5;
+  string password = 6;
+  optional google.protobuf.Timestamp last_password_update = 7;
+}
+
+// GetUserRequest is a request data to read user
+message GetUserRequest {
+  string id = 1;
+}
+
+// GetUserResponse is a response data to read user
+message GetUserResponse {
+  User user = 1;
+}
+
+// ListUserRequest is a request data to read all user for a given page
+message ListUserRequest {
+  int64 page = 1;
+  int64 limit = 2;
+}
+
+// ListUserResponse list of all users
+message ListUserResponse {
+  repeated User users = 1;
+  int64 page = 2;
+  int64 limit = 3;
+  int64 total = 4;
+}
+
+// CreateUserRequest is a request data to create a user
+message CreateUserRequest {
+  User user = 1;
+}
+
+// CreateUserResponse is a response data to create a user
+message CreateUserResponse {
+  User user = 1;
+}
\ No newline at end of file
diff --git a/core/kg/model/user.go b/core/kg/model/user.go
index 6feb948..dd34110 100644
--- a/core/kg/model/user.go
+++ b/core/kg/model/user.go
@@ -8,9 +8,8 @@
 )
 
 const (
-	userNameMaxLength  = 64
-	userNameMinLength  = 1
-	userEmailMaxLength = 128
+	userNameMaxLength = 64
+	userNameMinLength = 1
 )
 
 // User contains the details about the user.
@@ -46,6 +45,11 @@
 	return nil
 }
 
+func (u *User) Clone() *User {
+	user := *u
+	return &user
+}
+
 func isValidID(value string) bool {
 	if len(value) != 26 {
 		return false
@@ -70,9 +74,6 @@
 	}
 
 	validUsernameChars := regexp.MustCompile(`^[a-z0-9\.\-_]+$`)
-	if !validUsernameChars.MatchString(s) {
-		return false
-	}
 
-	return true
+	return validUsernameChars.MatchString(s)
 }
diff --git a/core/kg/rpc/interfaces.go b/core/kg/rpc/interfaces.go
new file mode 100644
index 0000000..0cd072a
--- /dev/null
+++ b/core/kg/rpc/interfaces.go
@@ -0,0 +1,7 @@
+package rpc
+
+import "github.com/giolekva/pcloud/core/kg/model"
+
+type appIface interface {
+	GetUser(userID string) (*model.User, error)
+}
diff --git a/core/kg/rpc/user_service.go b/core/kg/rpc/user_service.go
new file mode 100644
index 0000000..ee385cb
--- /dev/null
+++ b/core/kg/rpc/user_service.go
@@ -0,0 +1,46 @@
+package rpc
+
+import (
+	"context"
+
+	"github.com/giolekva/pcloud/core/kg/model/proto"
+	"github.com/pkg/errors"
+	"google.golang.org/protobuf/types/known/timestamppb"
+)
+
+type userService struct {
+	proto.UnimplementedUserServiceServer
+	app appIface
+}
+
+// NewService returns new user service
+func NewService(app appIface) proto.UserServiceServer {
+	s := &userService{
+		app: app,
+	}
+	return s
+}
+
+func (us *userService) GetUser(c context.Context, r *proto.GetUserRequest) (*proto.GetUserResponse, error) {
+	user, err := us.app.GetUser(r.GetId())
+	if err != nil {
+		return nil, errors.Wrap(err, "can't get user from application")
+	}
+	return &proto.GetUserResponse{
+		User: &proto.User{
+			Id:                 &user.ID,
+			CreateAt:           &timestamppb.Timestamp{Seconds: user.CreateAt},
+			UpdateAt:           &timestamppb.Timestamp{Seconds: user.UpdateAt},
+			DeleteAt:           &timestamppb.Timestamp{Seconds: user.DeleteAt},
+			Username:           user.Username,
+			Password:           user.Password,
+			LastPasswordUpdate: &timestamppb.Timestamp{Seconds: user.LastPasswordUpdate},
+		},
+	}, nil
+}
+func (us *userService) ListUsers(context.Context, *proto.ListUserRequest) (*proto.ListUserResponse, error) {
+	return nil, nil
+}
+func (us *userService) CreateUser(context.Context, *proto.CreateUserRequest) (*proto.CreateUserResponse, error) {
+	return nil, nil
+}
diff --git a/core/kg/rpc/user_service_test.go b/core/kg/rpc/user_service_test.go
new file mode 100644
index 0000000..ec53f89
--- /dev/null
+++ b/core/kg/rpc/user_service_test.go
@@ -0,0 +1,32 @@
+package rpc_test
+
+import (
+	"context"
+	"fmt"
+	"testing"
+
+	"github.com/giolekva/pcloud/core/kg/model/proto"
+	"github.com/giolekva/pcloud/core/kg/server"
+	"github.com/stretchr/testify/assert"
+	"google.golang.org/grpc"
+)
+
+func TestUserService(t *testing.T) {
+	ts := server.Setup(t)
+	defer ts.ShutdownServers()
+	_, err := ts.App.GetUser("id")
+	assert.NotNil(t, err)
+
+	ctx := context.Background()
+	address := fmt.Sprintf("localhost:%d", ts.Config.GRPC.Port)
+	conn, err := grpc.Dial(address, grpc.WithInsecure())
+	if err != nil {
+		t.Fatalf("did not connect: %v", err)
+	}
+	defer conn.Close()
+
+	client := proto.NewUserServiceClient(conn)
+	request := &proto.GetUserRequest{Id: "id"}
+	_, err = client.GetUser(ctx, request)
+	assert.NotNil(t, err)
+}
diff --git a/core/kg/server/grpc_server.go b/core/kg/server/grpc_server.go
index 565ce77..20aed55 100644
--- a/core/kg/server/grpc_server.go
+++ b/core/kg/server/grpc_server.go
@@ -5,28 +5,30 @@
 	"net"
 	"os"
 
+	"github.com/giolekva/pcloud/core/kg/common"
 	"github.com/giolekva/pcloud/core/kg/log"
 	"github.com/giolekva/pcloud/core/kg/model"
-	"github.com/giolekva/pcloud/core/kg/store"
+	"github.com/giolekva/pcloud/core/kg/model/proto"
+	"github.com/giolekva/pcloud/core/kg/rpc"
 	"google.golang.org/grpc"
 )
 
 // GRPCServerImpl grpc server implementation
 type GRPCServerImpl struct {
-	Log    *log.Logger
+	Log    common.LoggerIface
 	srv    *grpc.Server
 	config *model.Config
-	store  store.Store
+	app    common.AppIface
 }
 
 var _ Server = &GRPCServerImpl{}
 
 // NewGRPCServer creates new GRPC Server
-func NewGRPCServer(logger *log.Logger, config *model.Config, store store.Store) Server {
+func NewGRPCServer(logger common.LoggerIface, config *model.Config, app common.AppIface) Server {
 	a := &GRPCServerImpl{
 		Log:    logger,
 		config: config,
-		store:  store,
+		app:    app,
 	}
 
 	pwd, _ := os.Getwd()
@@ -45,6 +47,8 @@
 	}
 
 	a.srv = grpc.NewServer()
+	userService := rpc.NewService(a.app)
+	proto.RegisterUserServiceServer(a.srv, userService)
 
 	a.Log.Info("GRPC Server is listening on", log.Int("port", a.config.GRPC.Port))
 	if err := a.srv.Serve(lis); err != nil {
diff --git a/core/kg/server/http_server.go b/core/kg/server/http_server.go
index 6802332..6b07914 100644
--- a/core/kg/server/http_server.go
+++ b/core/kg/server/http_server.go
@@ -8,6 +8,7 @@
 	"os"
 	"time"
 
+	"github.com/giolekva/pcloud/core/kg/common"
 	"github.com/giolekva/pcloud/core/kg/log"
 	"github.com/giolekva/pcloud/core/kg/model"
 	"github.com/giolekva/pcloud/core/kg/store"
@@ -16,7 +17,7 @@
 
 // HTTPServerImpl http server implementation
 type HTTPServerImpl struct {
-	Log    *log.Logger
+	Log    common.LoggerIface
 	srv    *http.Server
 	root   *mux.Router
 	config *model.Config
@@ -26,7 +27,7 @@
 var _ Server = &HTTPServerImpl{}
 
 // NewHTTPServer creates new HTTP Server
-func NewHTTPServer(logger *log.Logger, config *model.Config, store store.Store) Server {
+func NewHTTPServer(logger common.LoggerIface, config *model.Config, store store.Store) Server {
 	a := &HTTPServerImpl{
 		Log:    logger,
 		root:   mux.NewRouter(),
diff --git a/core/kg/server/servers.go b/core/kg/server/servers.go
index 7363a0e..7773934 100644
--- a/core/kg/server/servers.go
+++ b/core/kg/server/servers.go
@@ -5,6 +5,7 @@
 	"os/signal"
 	"syscall"
 
+	"github.com/giolekva/pcloud/core/kg/common"
 	"github.com/giolekva/pcloud/core/kg/log"
 )
 
@@ -17,11 +18,11 @@
 // Servers represents different server services
 type Servers struct {
 	servers []Server
-	logger  *log.Logger
+	logger  common.LoggerIface
 }
 
 // New provides new service application
-func New(logger *log.Logger) *Servers {
+func New(logger common.LoggerIface) *Servers {
 	return &Servers{
 		logger: logger,
 	}
diff --git a/core/kg/server/servers_mock.go b/core/kg/server/servers_mock.go
new file mode 100644
index 0000000..2694329
--- /dev/null
+++ b/core/kg/server/servers_mock.go
@@ -0,0 +1,55 @@
+package server
+
+import (
+	"testing"
+	"time"
+
+	"github.com/giolekva/pcloud/core/kg/app"
+	"github.com/giolekva/pcloud/core/kg/common"
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/model"
+)
+
+type MockServer struct {
+	App     common.AppIface
+	Servers []Server
+	Config  *model.Config
+}
+
+func Setup(tb testing.TB) *MockServer {
+	if testing.Short() {
+		tb.SkipNow()
+	}
+	app := app.NewTestApp()
+	config := model.NewConfig()
+	logger := &log.NoOpLogger{}
+	grpcServer := NewGRPCServer(logger, config, app)
+	httpServer := NewHTTPServer(logger, config, nil)
+	ts := &MockServer{
+		App:     app,
+		Servers: []Server{grpcServer, httpServer},
+		Config:  config,
+	}
+	go grpcServer.Start() // nolint:errcheck
+	go httpServer.Start() // nolint:errcheck
+	time.Sleep(1 * time.Second)
+	return ts
+}
+
+func (ts *MockServer) ShutdownServers() {
+	done := make(chan bool)
+	go func() {
+		for _, server := range ts.Servers {
+			server.Shutdown() // nolint:errcheck
+		}
+		close(done)
+	}()
+
+	select {
+	case <-done:
+	case <-time.After(30 * time.Second):
+		// panic instead of fatal to terminate all tests in this package, otherwise the
+		// still running server could spuriously fail subsequent tests.
+		panic("failed to shutdown server within 30 seconds")
+	}
+}
diff --git a/core/kg/store/memory/store.go b/core/kg/store/memory/store.go
new file mode 100644
index 0000000..d15dfbf
--- /dev/null
+++ b/core/kg/store/memory/store.go
@@ -0,0 +1,24 @@
+package memory
+
+import "github.com/giolekva/pcloud/core/kg/store"
+
+type MemoryStore struct {
+	stores memoryStoreStores
+}
+
+var _ store.Store = &MemoryStore{}
+
+type memoryStoreStores struct {
+	user store.UserStore
+}
+
+func New() *MemoryStore {
+	store := &MemoryStore{}
+	store.stores.user = newMemoryUserStore(store)
+
+	return store
+}
+
+func (ms *MemoryStore) User() store.UserStore {
+	return ms.stores.user
+}
diff --git a/core/kg/store/memory/user_store.go b/core/kg/store/memory/user_store.go
new file mode 100644
index 0000000..1805845
--- /dev/null
+++ b/core/kg/store/memory/user_store.go
@@ -0,0 +1,65 @@
+package memory
+
+import (
+	"errors"
+	"strconv"
+	"sync"
+	"time"
+
+	"github.com/giolekva/pcloud/core/kg/model"
+	"github.com/giolekva/pcloud/core/kg/store"
+)
+
+type memoryUserStore struct {
+	*MemoryStore
+
+	users map[string]*model.User
+	maxID int
+	mutex sync.RWMutex
+}
+
+var _ store.UserStore = &memoryUserStore{}
+
+func newMemoryUserStore(mStore *MemoryStore) store.UserStore {
+	us := &memoryUserStore{
+		MemoryStore: mStore,
+		users:       map[string]*model.User{},
+		maxID:       1,
+	}
+	return us
+}
+
+func (us *memoryUserStore) Save(user *model.User) (*model.User, error) {
+	us.mutex.Lock()
+	defer us.mutex.Unlock()
+	if user.ID == "" {
+		user.ID = strconv.Itoa(us.maxID)
+		us.maxID++
+		user.CreateAt = time.Now().Unix()
+		user.DeleteAt = 0
+	} else {
+		user.UpdateAt = time.Now().Unix()
+	}
+	us.users[user.ID] = user
+	return user, nil
+}
+
+func (us *memoryUserStore) Get(id string) (*model.User, error) {
+	us.mutex.RLock()
+	defer us.mutex.RUnlock()
+	user, ok := us.users[id]
+	if !ok {
+		return nil, errors.New("User not found")
+	}
+	return user.Clone(), nil
+}
+
+func (us *memoryUserStore) GetAll() ([]*model.User, error) {
+	us.mutex.RLock()
+	defer us.mutex.RUnlock()
+	users := make([]*model.User, 0, len(us.users))
+	for _, user := range us.users {
+		users = append(users, user.Clone())
+	}
+	return users, nil
+}
