start implementing generic source