need to redesign wihtout return values