final, everything is done but not as polished as I like