not finished yet, some things are hardcoded that need to be fixed