optimization
bug fixing