Added my own stuff, still needs a good interface and cleanup