works, needs comments and  validation