diff --git a/src/engine/engine_test.go b/src/engine/engine_test.go
new file mode 100644
index 0000000000..11384609f1
--- /dev/null
+++ b/src/engine/engine_test.go
@@ -0,0 +1,39 @@
+package engine
+
+import (
+	"coordinator"
+	. "launchpad.net/gocheck"
+	"parser"
+	"protocol"
+	"testing"
+)
+
+// Hook up gocheck into the gotest runner.
+func Test(t *testing.T) {
+	TestingT(t)
+}
+
+type EngineSuite struct{}
+
+var _ = Suite(&EngineSuite{})
+
+type MockCoordinator struct {
+}
+
+func (self *MockCoordinator) DistributeQuery(query *parser.Query, yield func(*protocol.Series) error) error {
+	return nil
+}
+
+func (self *MockCoordinator) WriteSeriesData(series *protocol.Series) error {
+	return nil
+}
+
+func createMockCoordinator() coordinator.Coordinator {
+	return &MockCoordinator{}
+}
+
+func (self *EngineSuite) TestBasicQuery(c *C) {
+	engine, err := NewQueryEngine(createMockCoordinator())
+	c.Assert(err, IsNil)
+	c.Assert(engine, NotNil)
+}
diff --git a/src/engine/interface.go b/src/engine/interface.go
new file mode 100644
index 0000000000..2ff6ca72cc
--- /dev/null
+++ b/src/engine/interface.go
@@ -0,0 +1,15 @@
+package engine
+
+import (
+	"coordinator"
+	"parser"
+	"protocol"
+)
+
+type EngineI interface {
+	RunQuery(query *parser.Query, yield func(*protocol.Series) error) error
+}
+
+func NewQueryEngine(c coordinator.Coordinator) (EngineI, error) {
+	return nil, nil
+}