master needs to be refine