refactoring inner struct with more parameters available for future external defined