--- initialization ---