better structure and introduce browser testings