support custom sounds via URLs and fix a couple bugs