Command logging

closes #3 and #4