fully functional convert