Implements #4 and #7