seems to work really well.
cleaned up this version.
removed unnecessary assignment.
improved call stack by using 'this'?