working on input reading structure