ok, this can be moved into OS itself.