using initialization list and making constructors explicit