skeleton functions