1. object orientized 2. warning removed