try to understand dojo mechanisms ? just re-write it from zero