added departments. there's some issue. and separate code into many files
seems not a good idea.