basic version with sparse poly
add dense representation and distinguish it from sparse one