added many tests and fix some stoid naming