Move custom views into their own classes

Also use fluid interface for error dialog