use [defer](http://golang.org/doc/effective_go.html#defer)?