now more flexible via attributes