improve code, resolve issues, added generic interface for receivers