styles updated, performance optimized