adding custom property and optional extension support