php 5.3 compatible
added phpunit testing