closes #42, closes #43

bonus: redis backend