platform-agnostic frameworks