added intial pass implementation