patterns are good :P