abstraction, prototyping cj methods, init accepts callback and validate object