sharp: get rid of ISurface