Better abstracting, added Doc