a little bit modify