my private js framework