completed core blog functionality