fully working app and tests