five constructor functions