I used separate classes so it can be overridden in specific app if desired.