removed unnecessary ctors and added some validation