use new instead of alloc.init