Implemented #3 and #4