better dependency structure and updating to latest rust nightly