clean up method object to do most of the work in execute() instead of constructor; add more error handling & unit tests