server side is kind of completed