compiles, passes unittest