many performance improvements