a bunch of scripting