working on primitives and composites