[Refactoring]
[To do] add generic type in cage class