# XO0174: bare `self` parameter outside an interface method signature

A bare `self` parameter is only allowed first in an interface method signature (`fn get(self, id: Int) -> T?`). A method on a concrete type names its receiver before the method name: `fn (p: Point) norm() -> Int`. See core 2.4 and 3.4.

## Example

```xo
struct P { x: Int }

fn norm(self, scale: Int) -> Int { scale }
```

## Fix

```xo
struct P { x: Int }

fn (p: P) norm(scale: Int) -> Int { p.x * scale }
```

Run `xo explain XO0174` for this text in a terminal, or see
[section 10.6 of the specification](../../spec/core/#106-diagnostic-codes).

