refactor: use components structure