Use AS::Concern, cleanup code a bit