fully functional naming code