property system: rework it to use variadic template arguments