better and fix bug