/**
   * @param entity
   * @param user
   */
  public void remove(I entity, QaUser user) {

    // sanity check
    // sanity check
    Validate.notNull(user, "User cannot be null");
    Validate.notNull(entity, "Object cannot be null");

    // session
    Session session = sessionFactory.getCurrentSession();

    // prepare metadata
    QaMetadata metadata = ((QaMetaObject) entity).getMetadata();
    metadata.setState(QaMetaState.INACTIVE);
    metadata.setDeletedDate(new Timestamp(System.currentTimeMillis()));
    metadata.setDeleter(user.getId());
    ((QaMetaObject) entity).setMetadata(metadata);

    // update
    session.update(entity);
  }