this piece of code is quite confusing... we should discuss about that..