use an ABC mixing like ```python class DynamicsMixin(abc.ABC): @property @abc.abstractmethod def timestep(self) -> float: ... @property @abc.abstractmethod def sampling_rate(self) -> int: ... ``` and then a dataclass `class(znflow.Node, DynamicsMixin)` that does not overwrite the abc methods.