looks like it works, but it is really slove