add some better codes.