because flags are used in every object, move from trait to abstract