first pass at factor block