Added a bit of functionality throughout, but still some math left to do with triangle and rectangle