optimize & bugfix