Implement reset and destroy methods. Refactor init into private method. Cleanup