uses pixel_d instead of discrete pixels for its interfaces