Move destroy closer to init and fix counter not being removed on .destroy()
Declare prototype in a different manner and shift functions to better places