fully implemented comments except deletion