I would aim at separating the process of adding a `Handle` to a `Handle.Storage` from `acquire`-ing the handles in that storage. The `manage` should just add the `Handle` to a `Storage`.

    def acquire() {
      for (h <- handles) h.acquire()
    }

The reason is that sometimes you might want to `release` and re-`acquire` all your OpenGL objects (e.g. a user decides to change the resolution in the middle of the application).