adding first version of laser implementation