complete basic blog function