building out shape functionality