compile func