Complete blog refactor