Broke up compositon to multiple files, because circular dependency.