going to cleanup code for a final version