self-contained