Solves #1 and #2