Separate create/publish logic from app, rename routes