Added solution and tests