About five months ago I've answered this question on stackoverflow. Then I've created a project on bitbucket. Feel free to browse the source, send patches, write documentation, and please contribute whatever you can do make it better for everyone. Examples |

