added better error handling and some restrictions for names