Implement rest of spec