- Use Kotlin - Use Room database - Use retrofit for networking - Use RxJava pipeline for repo updating