added more flexible communication driver setup