refactor for more software platforms