added different shapes feature