finished core function, resource require unfinished