properties, third draft with all functionality