First commit, soon to modify contents to simplify class and then make more portable