changed multidriver to functional style. (maybe the result is not completely correct yet...)