Added some better constructors and a polished some code