implement two-sided text
use abstraction of categories
add legend