add button placement feature and tests