Generalize the backend logic
Merge branch 'sinatra' into develop