implement most of NCX