final working app