Interview work submission

here you go.  only finished part 1. and very few unit tests. coverage can be better.  probably bugs too on edge cases.