still not finished but here is a list of some modifications:

-added test app
-added some logging and parameter checks
-fixed some bugs
-changed Serializable... to Serializable[]