init() and deinit() are executed internally