back end implementation