new additions+cleaner codes