updated doc, enhanced class structure