diff --git a/blueprint/ninja_defs.go b/blueprint/ninja_defs.go
index cc05085..b9690e5 100644
--- a/blueprint/ninja_defs.go
+++ b/blueprint/ninja_defs.go
@@ -1,6 +1,7 @@
 package blueprint
 
 import (
+	"errors"
 	"fmt"
 	"strconv"
 	"strings"
@@ -72,7 +73,7 @@
 	Depth   int
 }
 
-func parsePoolParams(scope variableLookup, params *PoolParams) (*poolDef,
+func parsePoolParams(scope scope, params *PoolParams) (*poolDef,
 	error) {
 
 	def := &poolDef{
@@ -107,7 +108,7 @@
 	Variables map[string]*ninjaString
 }
 
-func parseRuleParams(scope variableLookup, params *RuleParams) (*ruleDef,
+func parseRuleParams(scope scope, params *RuleParams) (*ruleDef,
 	error) {
 
 	r := &ruleDef{
@@ -121,6 +122,10 @@
 			"specified")
 	}
 
+	if r.Pool != nil && !scope.IsPoolVisible(r.Pool) {
+		return nil, fmt.Errorf("Pool %s is not visible in this scope", r.Pool)
+	}
+
 	value, err := parseNinjaString(scope, params.Command)
 	if err != nil {
 		return nil, fmt.Errorf("error parsing Command param: %s", err)
@@ -217,7 +222,7 @@
 	Args      map[Variable]*ninjaString
 }
 
-func parseBuildParams(scope variableLookup, params *BuildParams) (*buildDef,
+func parseBuildParams(scope scope, params *BuildParams) (*buildDef,
 	error) {
 
 	rule := params.Rule
@@ -226,6 +231,14 @@
 		Rule: rule,
 	}
 
+	if !scope.IsRuleVisible(rule) {
+		return nil, fmt.Errorf("Rule %s is not visible in this scope", rule)
+	}
+
+	if len(params.Outputs) == 0 {
+		return nil, errors.New("Outputs param has no elements")
+	}
+
 	var err error
 	b.Outputs, err = parseNinjaStrings(scope, params.Outputs)
 	if err != nil {
