improve & bugfix