I feel that if you're thinking this way, you lack a proper design blueprint.
A good and maintainable software consists of design document and many other supporting ones. If you think that you can start from scratch with putting little mind in what is actually required, then it will be chaos and need lot of re-factoring.
There are various styles to design a piece of software. I'm not sure which methodology you have chosen.
A parent should contain whatever it needs; whatever makes it stand robust. The children inherit those qualities. A parent is not coded on the basis what is required by children.
There maybe instances when parent must be disturbed, but then keep it to once or twice only.