LOADS OF CHANGES.  mainly new script and abstractified service