Basically works, but need to clean up many corners.