Overlaul for 3.0 kernel