finishing touches and add uml diagram