add SO detection