cleanup and refeactoring