note remove, error handling, lots of stuff