made everything self-contained