Updated for increased platform agnosticism