better API style and packets