adding shape functionality