extract methods and metaprogram less.