added structures for easy data passing