first implementation of shape