move stave note factory behavior into separate object