added better documentation