Implement #3 and #4