documented type based behaviour