add prototype functionality