initial commit, it works but there is still work on error handling and safety checks