Refactored to work on PHP 5.3. Fixes #5#