This can be written as `alloc`/`init`