reimplement quest system