added a factorial