Move main to Invoker singleton.
diff --git a/core/dispatcher/src/main/scala/whisk/core/container/package.scala b/core/dispatcher/src/main/scala/whisk/core/container/package.scala
deleted file mode 100644
index ba59619..0000000
--- a/core/dispatcher/src/main/scala/whisk/core/container/package.scala
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2015-2016 IBM 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 whisk.core
-
-import scala.concurrent.duration._
-
-import java.time.Instant
-
-import whisk.core.entity.UUID
-import whisk.core.entity.DocRevision
-
-/**
- * This object contains type definitions that are useful when observing and timing container operations.
- */
-package object container {
-
-    /**
-     * Identifies a combination of owner+action+version (except special cases)
-     */
-    class ActionContainerId(val stringRepr: String) extends AnyVal
-
-    object ActionContainerId {
-        // Convenience "constructor" since this is the most common case.
-        def apply(uuid: UUID, actionFullyQualifiedName: String, actionRevision: DocRevision) =
-            new ActionContainerId(s"instantiated.${uuid}.${actionFullyQualifiedName}.${actionRevision}")
-    }
-
-    /**
-     * Special case for stem cell containers
-     */
-    val WarmNodeJsActionContainerId = new ActionContainerId("warm.nodejs")
-
-    /**
-     * Represents a time interval, which can be viewed as a duration for which
-     *  the start/end instants are fully known (as opposed to being relative).
-     */
-    case class Interval(start: Instant, end: Instant) {
-        def duration = Duration.create(end.toEpochMilli() - start.toEpochMilli(), MILLISECONDS)
-    }
-
-    /**
-     * Represents the result of accessing an endpoint in a container:
-     * Start time, End time, Some(response) from container consisting of status code and payload
-     * If there is no response or an exception, then None.
-     */
-    case class RunResult(interval: Interval, response: Option[(Int, String)]) {
-        def duration = interval.duration
-    }
-
-    /**
-     * The result of trying to obtain a container.
-     */
-    sealed trait ContainerResult
-
-    case object CacheMiss extends ContainerResult
-
-    /**
-     * The result of trying to obtain a container which is known to exist.
-     */
-    sealed trait FinalContainerResult extends ContainerResult
-
-    case class Success(con: Container, initResult: Option[RunResult]) extends FinalContainerResult
-    case object Busy extends FinalContainerResult
-    case class Error(string: String) extends FinalContainerResult
-
-    // Note: not using InetAddress here because we don't want to do any lookup
-    // until used for something.
-    case class ContainerAddr(host: String, port: Int) {
-        override def toString() = s"$host:$port"
-    }
-
-    sealed abstract class ContainerIdentifier(val id: String)
-    class ContainerName(val name: String) extends ContainerIdentifier(name)
-    class ContainerHash(val hash: String) extends ContainerIdentifier(hash)
-
-    object ContainerIdentifier {
-        def fromString(str: String): ContainerIdentifier = {
-            val s = str.trim
-            require(!s.contains("\n"))
-            if (s.matches("^[0-9a-fA-F]+$")) {
-                new ContainerHash(s)
-            } else {
-                new ContainerName(s)
-            }
-        }
-    }
-
-    object ContainerName {
-        def fromString(str: String) = new ContainerName(str)
-    }
-
-    object ContainerHash {
-        def fromString(str: String) = {
-            require(str.matches("^[0-9a-fA-F]+$"))
-            new ContainerHash(str)
-        }
-    }
-
-    final class DockerOutput(val toOption: Option[String]) extends AnyVal
-    object DockerOutput {
-        def apply(content: String) = new DockerOutput(Some(content))
-        def unavailable = new DockerOutput(None)
-    }
-}