Declaration is no a struct and instanciated on a per needed basis, and part of the state is removed from Semantic.