+ support for sourcing scripts with arguments
+ don't rewrite same file twice
+ code cleanup