add windows, mac, linux support.
TODO: android support