prevent re-initialization, implemented destroy function