add public functions
add GUI