FINISH ALL NEEDED FEATURES