backward add, minor modification to forward