initial commit
need more specs, but don't have time right now