many many changes and testing. still alpha!