Have the core function writen