explicitly defining ctors according to paradigm (removing "= default" etc constructs