Reorganized to less files and a simpler version