moved work to dll and add andriod implementation