refactoring for platform-indepedent implementation