some works on #3