Added overview and moved some existing documentation into methods