make caret thingy dynamic

not DRY, it sucks, but work, closes #7