Re-composite almost of codes
Fix build error (use unowned twice)
refactored
Resolve runtime error & refactoring