add cancel icon and cancel callback. abstract create button into own func