clean up, code coverage, makefile and all

Most changes are for obvious reasons.

Though, one may be deeply wrong: moving static methods to prototype.

My main motive is that static methods should exist only if you really need to access them...statically. Here I wasn't able to figure out any static use as in most cases you will call them on one unique instance.

Moreover, if you pass an instance to some function, in case you keep static methods, you would also need to pass the class too, as the function may need to use the static methods.

On the other hand, you may want to prepare handlers in separate files, and in this case, static methods would be useful.

It's up to you, see what's best.