Strategy patter used, but not efficiently