initial commit - full code