Make it more flexible where the experiment is stored.
Use WeakReference for the listener interface.
Store script experiments in the script directory.