Five constructors for non-API constructor seems to be too much. Maybe provide default values manually on call sites?