alloc implemented
dealloc implemented