added many tests