diff --git a/properties.go b/properties.go
index 7382520..1c59e70 100644
--- a/properties.go
+++ b/properties.go
@@ -131,6 +131,29 @@
 
 // ----------------------------------------------------------------------------
 
+// GetInt parses the expanded value as an int if the key exists.
+// If key does not exist or the value cannot be parsed the default
+// value is returned.
+func (p *Properties) GetInt(key string, def int) int {
+	v, err := p.getInt64(key)
+	if err != nil {
+		return def
+	}
+	return intRangeCheck(key, v)
+}
+
+// MustGetInt parses the expanded value as an int if the key exists.
+// If key does not exist or the value cannot be parsed the function panics.
+func (p *Properties) MustGetInt(key string) int {
+	v, err := p.getInt64(key)
+	if err != nil {
+		panic(err)
+	}
+	return intRangeCheck(key, v)
+}
+
+// ----------------------------------------------------------------------------
+
 // GetInt64 parses the expanded value as an int64 if the key exists.
 // If key does not exist or the value cannot be parsed the default
 // value is returned.
@@ -165,6 +188,29 @@
 
 // ----------------------------------------------------------------------------
 
+// GetUint parses the expanded value as an uint if the key exists.
+// If key does not exist or the value cannot be parsed the default
+// value is returned.
+func (p *Properties) GetUint(key string, def uint) uint {
+	v, err := p.getUint64(key)
+	if err != nil {
+		return def
+	}
+	return uintRangeCheck(key, v)
+}
+
+// MustGetUint parses the expanded value as an int if the key exists.
+// If key does not exist or the value cannot be parsed the function panics.
+func (p *Properties) MustGetUint(key string) uint {
+	v, err := p.getUint64(key)
+	if err != nil {
+		panic(err)
+	}
+	return uintRangeCheck(key, v)
+}
+
+// ----------------------------------------------------------------------------
+
 // GetUint64 parses the expanded value as an uint64 if the key exists.
 // If key does not exist or the value cannot be parsed the default
 // value is returned.
diff --git a/properties_test.go b/properties_test.go
index 3d2a413..1dbbc1b 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -8,6 +8,7 @@
 	"bytes"
 	"flag"
 	"fmt"
+	"math"
 	"os"
 	"strings"
 	"testing"
@@ -184,48 +185,48 @@
 
 // ----------------------------------------------------------------------------
 
-type intTest struct {
+type int64Test struct {
 	input, key string
 	def, value int64
 }
 
-var intTests = []*intTest{
+var int64Tests = []*int64Test{
 	// valid values
-	&intTest{"key = 1", "key", 999, 1},
-	&intTest{"key = 0", "key", 999, 0},
-	&intTest{"key = -1", "key", 999, -1},
-	&intTest{"key = 0123", "key", 999, 123},
+	&int64Test{"key = 1", "key", 999, 1},
+	&int64Test{"key = 0", "key", 999, 0},
+	&int64Test{"key = -1", "key", 999, -1},
+	&int64Test{"key = 0123", "key", 999, 123},
 
 	// invalid values
-	&intTest{"key = 0xff", "key", 999, 999},
-	&intTest{"key = 1.0", "key", 999, 999},
-	&intTest{"key = a", "key", 999, 999},
+	&int64Test{"key = 0xff", "key", 999, 999},
+	&int64Test{"key = 1.0", "key", 999, 999},
+	&int64Test{"key = a", "key", 999, 999},
 
 	// non existent key
-	&intTest{"key = 1", "key2", 999, 999},
+	&int64Test{"key = 1", "key2", 999, 999},
 }
 
 // ----------------------------------------------------------------------------
 
-type uintTest struct {
+type uint64Test struct {
 	input, key string
 	def, value uint64
 }
 
-var uintTests = []*uintTest{
+var uint64Tests = []*uint64Test{
 	// valid values
-	&uintTest{"key = 1", "key", 999, 1},
-	&uintTest{"key = 0", "key", 999, 0},
-	&uintTest{"key = 0123", "key", 999, 123},
+	&uint64Test{"key = 1", "key", 999, 1},
+	&uint64Test{"key = 0", "key", 999, 0},
+	&uint64Test{"key = 0123", "key", 999, 123},
 
 	// invalid values
-	&uintTest{"key = -1", "key", 999, 999},
-	&uintTest{"key = 0xff", "key", 999, 999},
-	&uintTest{"key = 1.0", "key", 999, 999},
-	&uintTest{"key = a", "key", 999, 999},
+	&uint64Test{"key = -1", "key", 999, 999},
+	&uint64Test{"key = 0xff", "key", 999, 999},
+	&uint64Test{"key = 1.0", "key", 999, 999},
+	&uint64Test{"key = a", "key", 999, 999},
 
 	// non existent key
-	&uintTest{"key = 1", "key2", 999, 999},
+	&uint64Test{"key = 1", "key2", 999, 999},
 }
 
 // ----------------------------------------------------------------------------
@@ -309,8 +310,26 @@
 	c.Assert(func() { p.MustGetFloat64("invalid") }, PanicMatches, "invalid key: invalid")
 }
 
+func (l *TestSuite) TestGetInt(c *C) {
+	for _, test := range int64Tests {
+		p, err := parse(test.input)
+		c.Assert(err, IsNil)
+		c.Assert(p.Len(), Equals, 1)
+		c.Assert(p.GetInt(test.key, int(test.def)), Equals, int(test.value))
+	}
+}
+
+func (l *TestSuite) TestMustGetInt(c *C) {
+	input := "key = 123\nkey2 = ghi"
+	p, err := parse(input)
+	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")
+}
+
 func (l *TestSuite) TestGetInt64(c *C) {
-	for _, test := range intTests {
+	for _, test := range int64Tests {
 		p, err := parse(test.input)
 		c.Assert(err, IsNil)
 		c.Assert(p.Len(), Equals, 1)
@@ -327,8 +346,26 @@
 	c.Assert(func() { p.MustGetInt64("invalid") }, PanicMatches, "invalid key: invalid")
 }
 
+func (l *TestSuite) TestGetUint(c *C) {
+	for _, test := range uint64Tests {
+		p, err := parse(test.input)
+		c.Assert(err, IsNil)
+		c.Assert(p.Len(), Equals, 1)
+		c.Assert(p.GetUint(test.key, uint(test.def)), Equals, uint(test.value))
+	}
+}
+
+func (l *TestSuite) TestMustGetUint(c *C) {
+	input := "key = 123\nkey2 = ghi"
+	p, err := parse(input)
+	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")
+}
+
 func (l *TestSuite) TestGetUint64(c *C) {
-	for _, test := range uintTests {
+	for _, test := range uint64Tests {
 		p, err := parse(test.input)
 		c.Assert(err, IsNil)
 		c.Assert(p.Len(), Equals, 1)
@@ -386,6 +423,28 @@
 	testKeyValuePrePostfix(c, "*[", "]*", "key=value\nkey2=*[key]*", "key", "value", "key2", "value")
 }
 
+func (l *TestSuite) TestPanicOn32BitIntOverflow(c *C) {
+	is32Bit = true
+	var min, max int64 = math.MinInt32-1, math.MaxInt32+1
+	input := fmt.Sprintf("min=%d\nmax=%d", min, max)
+	p, err := parse(input)
+	c.Assert(err, IsNil)
+	c.Assert(p.MustGetInt64("min"), Equals, min)
+	c.Assert(p.MustGetInt64("max"), Equals, max)
+	c.Assert(func() { p.MustGetInt("min") }, PanicMatches, ".* out of range")
+	c.Assert(func() { p.MustGetInt("max") }, PanicMatches, ".* out of range")
+}
+
+func (l *TestSuite) TestPanicOn32BitUintOverflow(c *C) {
+	is32Bit = true
+	var max uint64 = math.MaxUint32+1
+	input := fmt.Sprintf("max=%d", max)
+	p, err := parse(input)
+	c.Assert(err, IsNil)
+	c.Assert(p.MustGetUint64("max"), Equals, max)
+	c.Assert(func() { p.MustGetUint("max") }, PanicMatches, ".* out of range")
+}
+
 // ----------------------------------------------------------------------------
 
 // tests all combinations of delimiters, leading and/or trailing whitespace and newlines.
diff --git a/rangecheck.go b/rangecheck.go
new file mode 100644
index 0000000..21cf6f6
--- /dev/null
+++ b/rangecheck.go
@@ -0,0 +1,31 @@
+// Copyright 2013 Frank Schroeder. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package properties
+
+import (
+	"fmt"
+	"math"
+)
+
+// make this a var to overwrite it in a test
+var is32Bit = ^uint(0) == math.MaxUint32
+
+// intRangeCheck checks if the value fits into the int type and
+// panics if it does not.
+func intRangeCheck(key string, v int64) int {
+	if is32Bit && (v < math.MinInt32 || v > math.MaxInt32) {
+		panic(fmt.Sprintf("Value %d for key %s out of range", v, key))
+	}
+	return int(v)
+}
+
+// uintRangeCheck checks if the value fits into the uint type and
+// panics if it does not.
+func uintRangeCheck(key string, v uint64) uint {
+	if is32Bit && v > math.MaxUint32 {
+		panic(fmt.Sprintf("Value %d for key %s out of range", v, key))
+	}
+	return uint(v)
+}
