Initial commit - all methods added or improved as per specifications