works but not completely