added more features, not finished yet