rollback to private method