generalised mapD slightly