made transitive dependencies optional