generate different shapes