add ability to define custom commands