Add transaction model + tests