backend saving functions complete