@eteq - I think that:

```
def __init__(self, representation=None, lon=None, lat=None, distance=None):
```

would be better because it does allow

```
SphericalRepresentation(other_rep)
```

but also

```
SphericalRepresentation(lon=..., lat=...)
```

I guess I'm advocating a no-magic approach (with the understanding that this can also be changed later), but where the only convenience is that ``representation`` is the first argument because ``lon=`` and ``lat=`` aren't that long to type ;) The problem with:

```
def __init__(self, lon, lat=None, distance=None):
```

is also that from the function signature, it's not clear that ``lon`` can also take a representation, and we don't want to call it ``lon_or_representation``.