Separated into init, communicate, close