Refactor
Forward declarations
Order by dependencies