Updated with more documentation