validation seems to be good to go. might need some cleanup. unit tests still need cleanup