core functions to post