redone app (same as before, some small improvements)