Final Working copy + alex's test code