rewritten the whole library using a more classic approach. Now we should be able to handle browser specific implementation easier. Added a lot case-documentation