Fix for issue #224

Fix for issue #224 
Also added some basic unit tests plus one threading test to ensure re-entrancy is possible