Added first version still needs work and has no tests but it does work