refine prototype etc.