updates by the OP Sean Shi