sparsity optimisations