why add, remove?
why setResourceIdToResource