better model but result is still buggy