Constructor that actually works. Long param list for initialize though