cleaned up, tests pasisng