diff --git a/.dockerignore b/.dockerignore
index a00ce81..7beaa60 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1,2 @@
 build/*
-cmd/*
 deployments/*
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 8b13789..dbc2a92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,4 @@
+vendor
 
+/bbsim
+/bbsimctl
diff --git a/Makefile b/Makefile
index b2595bd..50f281f 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@
 	gocover-cobertura < ./tests/results/go-test-coverage.out > ./tests/results/go-test-coverage.xml
 
 docker-build: # @HELP Build a docker container
-	docker build --build-arg GIT_STATUS=${GIT_STATUS} -t ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG} -f build/package/Dockerfile .
+	docker build -t ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG} -f build/package/Dockerfile .
 
 docker-push: # @HELP Push a docker container to a registry
 	docker push ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG}
@@ -69,15 +69,15 @@
     		-X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
     		-X main.gitStatus=${GIT_STATUS} \
     		-X main.version=${VERSION}" \
-    	-o ./cmd/bbsim ./internal/bbsim
+    	./cmd/bbsim
 
 build-bbsimctl:
 	GO111MODULE=on go build -i -v -mod vendor \
-        	-ldflags "-X github.com/opencord/bbsim/internal/bbsimctl/config.BuildTime=$(shell date +”%Y/%m/%d-%H:%M:%S”) \
-        		-X github.com/opencord/bbsim/internal/bbsimctl/config.CommitHash=$(shell git log --pretty=format:%H -n 1) \
-        		-X github.com/opencord/bbsim/internal/bbsimctl/config.GitStatus=${GIT_STATUS} \
-        		-X github.com/opencord/bbsim/internal/bbsimctl/config.Version=${VERSION}" \
-        	./cmd/bbsimctl
+		-ldflags "-X github.com/opencord/bbsim/internal/bbsimctl/config.BuildTime=$(shell date +”%Y/%m/%d-%H:%M:%S”) \
+			-X github.com/opencord/bbsim/internal/bbsimctl/config.CommitHash=$(shell git log --pretty=format:%H -n 1) \
+			-X github.com/opencord/bbsim/internal/bbsimctl/config.GitStatus=${GIT_STATUS} \
+			-X github.com/opencord/bbsim/internal/bbsimctl/config.Version=${VERSION}" \
+		./cmd/bbsimctl
 
 api/openolt/openolt.pb.go: api/openolt/openolt.proto
 	@protoc -I . \
diff --git a/README.md b/README.md
index 6a5dcbb..2cfd0fa 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,8 @@
 ## Control API
 
 BBSim comes with a gRPC interface to control the internal state.
-This interface can be queried using `bbsimctl` (the tool can be build with `make build`):
+This interface can be queried using `bbsimctl` (the tool can be build with `make build`
+and it's available inside the `bbsim` container):
 
 ```bash
 $ ./bbsimctl --help
diff --git a/build/package/Dockerfile b/build/package/Dockerfile
index 2b1484e..46af0e3 100644
--- a/build/package/Dockerfile
+++ b/build/package/Dockerfile
@@ -47,13 +47,7 @@
 # copy and build
 COPY . ./
 RUN go mod vendor -v  # we can't vendor dependencies unless the code is there
-ARG GIT_STATUS=Clean
-RUN GO111MODULE=on go build -mod vendor\
-    -ldflags "-X main.buildTime=$(date +”%Y/%m/%d-%H:%M:%S”) \
-    		-X main.commitHash=$(git log --pretty=format:%H -n 1) \
-    		-X main.gitStatus=${GIT_STATUS}\
-    		-X main.version=$(cat VERSION)" \
-    -o ./cmd/bbsim ./internal/bbsim
+RUN make build
 
 # runtime parent
 FROM golang:1.12-stretch
@@ -73,6 +67,8 @@
 && touch /var/lib/dhcp/dhcpd.leases
 
 WORKDIR /app
-COPY --from=builder /go/src/github.com/opencord/bbsim/cmd/bbsim /app/bbsim
+COPY --from=builder /go/src/github.com/opencord/bbsim/bbsim /app/bbsim
+COPY --from=builder /go/src/github.com/opencord/bbsim/bbsimctl /usr/bin/bbsimctl
 RUN chmod a+x /app/bbsim
+RUN chmod a+x /usr/bin/bbsimctl
 CMD [ '/app/bbsim' ]
\ No newline at end of file
diff --git a/cmd/.gitignore b/cmd/.gitignore
deleted file mode 100644
index c96a04f..0000000
--- a/cmd/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
\ No newline at end of file
diff --git a/internal/bbsim/bbsim.go b/cmd/bbsim/bbsim.go
similarity index 93%
rename from internal/bbsim/bbsim.go
rename to cmd/bbsim/bbsim.go
index 7c47e91..7d8ea06 100644
--- a/internal/bbsim/bbsim.go
+++ b/cmd/bbsim/bbsim.go
@@ -19,6 +19,7 @@
 import (
 	"flag"
 	"github.com/opencord/bbsim/api/bbsim"
+	"github.com/opencord/bbsim/internal/bbsim/api"
 	"github.com/opencord/bbsim/internal/bbsim/devices"
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
@@ -29,6 +30,16 @@
 	"sync"
 )
 
+type CliOptions struct {
+	OltID        int
+	NumNniPerOlt int
+	NumPonPerOlt int
+	NumOnuPerPon int
+	STag         int
+	CTagInit     int
+	profileCpu   *string
+}
+
 func getOpts() *CliOptions {
 
 	olt_id := flag.Int("olt_id", 0, "Number of OLT devices to be emulated (default is 1)")
@@ -63,7 +74,7 @@
 		log.Fatalf("APIServer failed to listen: %v", err)
 	}
 	grpcServer := grpc.NewServer()
-	bbsim.RegisterBBSimServer(grpcServer, BBSimServer{})
+	bbsim.RegisterBBSimServer(grpcServer, api.BBSimServer{})
 
 	reflection.Register(grpcServer)
 
diff --git a/cmd/bbsimctl/bbsimctl.go b/cmd/bbsimctl/bbsimctl.go
new file mode 100644
index 0000000..29b45c5
--- /dev/null
+++ b/cmd/bbsimctl/bbsimctl.go
@@ -0,0 +1,63 @@
+/*
+ * Portions copyright 2019-present Open Networking Foundation
+ * Original copyright 2019-present Ciena Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package main
+
+import (
+	"fmt"
+	"github.com/jessevdk/go-flags"
+	"github.com/opencord/bbsim/internal/bbsimctl/commands"
+	"github.com/opencord/bbsim/internal/bbsimctl/config"
+	"os"
+	"path"
+)
+
+func main() {
+
+	parser := flags.NewNamedParser(path.Base(os.Args[0]),
+		flags.HelpFlag|flags.PassDoubleDash|flags.PassAfterNonOption)
+	_, err := parser.AddGroup("Global Options", "", &config.GlobalOptions)
+	if err != nil {
+		panic(err)
+	}
+
+	commands.RegisterConfigCommands(parser)
+	commands.RegisterOltCommands(parser)
+	commands.RegisterONUCommands(parser)
+
+	_, err = parser.ParseArgs(os.Args[1:])
+	if err != nil {
+		_, ok := err.(*flags.Error)
+		if ok {
+			real := err.(*flags.Error)
+			if real.Type == flags.ErrHelp {
+				os.Stdout.WriteString(err.Error() + "\n")
+				return
+			}
+		}
+
+		//corderror, ok := err.(corderrors.CordCtlError)
+		//if ok {
+		//	if corderror.ShouldDumpStack() || config.GlobalOptions.Debug {
+		//		os.Stderr.WriteString("\n" + corderror.Stack())
+		//	}
+		//}
+
+		fmt.Fprintf(os.Stderr, "%s: %s\n", os.Args[0], err.Error())
+
+		os.Exit(1)
+	}
+}
diff --git a/internal/bbsim/grpc_api_server.go b/internal/bbsim/api/grpc_api_server.go
similarity index 99%
rename from internal/bbsim/grpc_api_server.go
rename to internal/bbsim/api/grpc_api_server.go
index 20b6164..27b0ce5 100644
--- a/internal/bbsim/grpc_api_server.go
+++ b/internal/bbsim/api/grpc_api_server.go
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package main
+package api
 
 import (
 	"context"
diff --git a/internal/bbsim/types.go b/internal/bbsim/types.go
deleted file mode 100644
index 76c23cd..0000000
--- a/internal/bbsim/types.go
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
-
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
-
- * http://www.apache.org/licenses/LICENSE-2.0
-
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-// General
-
-type CliOptions struct {
-	OltID        int
-	NumNniPerOlt int
-	NumPonPerOlt int
-	NumOnuPerPon int
-	STag         int
-	CTagInit     int
-	profileCpu   *string
-}
diff --git a/vendor/.gitignore b/vendor/.gitignore
deleted file mode 100644
index c96a04f..0000000
--- a/vendor/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
\ No newline at end of file
