it needs a custom init