compatible for old browsers
fix the edge case of extending null
revise tests
update version