Flesh out basic code and add requirements