adding lots more features
adding some extra validation measures