implementing prototype