Initial Coding. Need to add unit testing