Gum overlay logic

I did some rebasing and used git push force and I managed to loose the reference to the original pull request #229.

Anyway I've fixed the changes based on the comments in #229 and made a clean pull request.

Sorry for the hassle.

Fixes #137 .
can you move these functions to the prototype as well?

There is no need to have them defined inside the function as you don't really need to create a closure.