finish initial version