less dependencies, now only 550KB