implement a custom TreeModel to improve the performance