almost finished
 beta version