It does a different initialization in the constructor. I suppose it would be possible to pass something to DTLSSession to designate if the initialization should be for client or server, but this felt cleaner to me, especially because there are statics that only the targets leveraging the client session need.