Isn't any open source solution available for this already?