re-implemented the app using open sources