diff --git a/properties.go b/properties.go
index 07fef2c..3741842 100644
--- a/properties.go
+++ b/properties.go
@@ -480,5 +480,5 @@
 }
 
 func invalidKeyError(key string) error {
-	return fmt.Errorf("invalid key: %s", key)
+	return fmt.Errorf("unknown property: %s", key)
 }
diff --git a/properties_test.go b/properties_test.go
index d3555f6..e0e0f9b 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -311,7 +311,7 @@
 	p, err := parse(input)
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGet("key"), Equals, "value")
-	c.Assert(func() { p.MustGet("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGet("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetBool(c *C) {
@@ -328,7 +328,7 @@
 	p, err := parse(input)
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetBool("key"), Equals, true)
-	c.Assert(func() { p.MustGetBool("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetBool("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetDuration(c *C) {
@@ -346,7 +346,7 @@
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetDuration("key"), Equals, time.Duration(123))
 	c.Assert(func() { p.MustGetDuration("key2") }, PanicMatches, "strconv.ParseInt: parsing.*")
-	c.Assert(func() { p.MustGetDuration("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetDuration("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetFloat64(c *C) {
@@ -364,7 +364,7 @@
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetFloat64("key"), Equals, float64(123))
 	c.Assert(func() { p.MustGetFloat64("key2") }, PanicMatches, "strconv.ParseFloat: parsing.*")
-	c.Assert(func() { p.MustGetFloat64("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetFloat64("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetInt(c *C) {
@@ -382,7 +382,7 @@
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetInt("key"), Equals, int(123))
 	c.Assert(func() { p.MustGetInt("key2") }, PanicMatches, "strconv.ParseInt: parsing.*")
-	c.Assert(func() { p.MustGetInt("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetInt("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetInt64(c *C) {
@@ -400,7 +400,7 @@
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetInt64("key"), Equals, int64(123))
 	c.Assert(func() { p.MustGetInt64("key2") }, PanicMatches, "strconv.ParseInt: parsing.*")
-	c.Assert(func() { p.MustGetInt64("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetInt64("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetUint(c *C) {
@@ -418,7 +418,7 @@
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetUint("key"), Equals, uint(123))
 	c.Assert(func() { p.MustGetUint64("key2") }, PanicMatches, "strconv.ParseUint: parsing.*")
-	c.Assert(func() { p.MustGetUint64("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetUint64("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetUint64(c *C) {
@@ -436,7 +436,7 @@
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetUint64("key"), Equals, uint64(123))
 	c.Assert(func() { p.MustGetUint64("key2") }, PanicMatches, "strconv.ParseUint: parsing.*")
-	c.Assert(func() { p.MustGetUint64("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetUint64("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestGetString(c *C) {
@@ -453,7 +453,7 @@
 	p, err := parse(input)
 	c.Assert(err, IsNil)
 	c.Assert(p.MustGetString("key"), Equals, "value")
-	c.Assert(func() { p.MustGetString("invalid") }, PanicMatches, "invalid key: invalid")
+	c.Assert(func() { p.MustGetString("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
 func (l *TestSuite) TestWrite(c *C) {
