Protocol specifies the init function