split backend in core and legacy(-protocol) part