>>261
  if (A_init() != 0) goto A_FAILED;
  if (B_init() != 0) goto B_FAILED;
  if (C_init() != 0) goto C_FAILED;
  if (D_init() != 0) goto D_FAILED;

  return 0;

D_FAILED:
  D_finish();
C_FAILED:
  C_finish();
B_FAILED:
  B_finish();
A_FAILED:
  A_finish();
  return -1;