improve prototype