meet the required prototype