improve interface, allow attributes being saved
add content validation
add some style