added extra fun features and some data validation =)