added features, need to test and change stuff