+**impart** is a library for the final layer between the API and the consumer. It's used in the latest [Write.as](https://write.as) and [HTMLhouse](https://html.house) APIs.
+
+We're still in the early stages of development, so there may be breaking changes.
+
+## Example use
+
+```go
+package main
+
+import (
+ "fmt"
+ "github.com/writeas/impart"
+ "net/http"
+)
+
+type handlerFunc func(w http.ResponseWriter, r *http.Request) error
+
+func main() {
+ http.HandleFunc("/", handle(index))
+ http.ListenAndServe("127.0.0.1:8080", nil)
+}
+
+func index(w http.ResponseWriter, r *http.Request) error {
+ fmt.Fprintf(w, "Hello world!")
+
+ return nil
+}
+
+func handle(f handlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ handleError(w, r, func() error {
+ // Do authentication...
+
+ // Handle the request
+ err := f(w, r)
+
+ // Log the request and result...
+
+ return err
+ }())
+ }
+}
+
+func handleError(w http.ResponseWriter, r *http.Request, err error) {
+ if err == nil {
+ return
+ }
+
+ if err, ok := err.(impart.HTTPError); ok {
+ impart.WriteError(w, err)
+ return
+ }
+
+ impart.WriteError(w, impart.HTTPError{http.StatusInternalServerError, "Internal server error :("})