return custom with defer