rebuilt with @DiscreteObject added!