use penny and ccan for that.