func NewSomeResource() *SomeResource {
	sr := SomeResource{store: make(map[string]int)}
	return &sr
}

type SomeResource struct {
	sync.RWMutex
	store map[string]int
}

func (sr *SomeResource) setValue(rw http.ResponseWriter, r *http.Request) {
	sr.Lock()
	defer sr.Unlock()
	var so SomeObject
	json.NewDecoder(r.Body).Decode(&so)
	sr.store[so.Key] = so.Value
}

func (sr *SomeResource) getValue(rw http.ResponseWriter, r *http.Request) {
	sr.RLock()
	defer sr.RUnlock()
	vars := mux.Vars(r)
	v := strconv.Itoa(sr.store[vars["key"]])
	rw.Write([]byte(v))
}