implement quest system