added factorial utility and started on problem 21