changed the names a bit
added a sparse product