Filled in additional holes; only a few methods need to complete initial implementation