better dependency structure