adding code and specs