added property extraction and composition